のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,851人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.116 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    251 : Name_Not - 2014/06/06(金) 21:20:34.64 ID:???.net (+2,-29,-43)
    CSSで
    pointer-events:none
    を設定していたら
    JavaScriptのイベントも起きないのでしょうか?
    252 : Name_Not - 2014/06/06(金) 21:37:30.68 ID:???.net (-1,-30,-70)
    >>251
    html
    <a href="#">hoge</a><br>
    <a style="pointer-events:none;" href="#">hoge</a>

    js
    $('a').mouseover(function(){ this.style.cursor = "wait"; });
    253 : Name_Not - 2014/06/06(金) 21:45:28.89 ID:???.net (-2,-30,-46)
    あとこれも試しに
    $('a').click(function() { alert(''); });
    254 : Name_Not - 2014/06/06(金) 22:02:23.92 ID:???.net (+57,+29,-7)
    ありがとうございます
    JSのイベントすら無効にできるんですね~
    イベントのガードに使えそう
    255 : Name_Not - 2014/06/07(土) 03:17:34.23 ID:???.net (+104,+29,-65)
    >>247
    >ブラウザが独自拡張すれば、特別な理由はどうとでもなる

    机上の空論の話をするのはやめよう。

    現実に存在するブラウザの話をしよう。

    未知の属性は書いても無視されるから
    問題にならない。
    256 : Name_Not - 2014/06/07(土) 04:00:56.14 ID:???.net (+91,+16,-54)
    >>255
    仕様と実装の違いを理解した方がいい
    HTML4仕様の質問に実装の話をする矛盾に気が付くべき
    257 : Name_Not - 2014/06/07(土) 04:02:40.85 ID:???.net (+104,+29,-63)
    >>256
    話逸らすなよ。

    未知の属性は書いても無視されるから問題にならないだろ。

    問題になるブラウザは現存しない。

    お前、頭固すぎ。
    258 : Name_Not - 2014/06/07(土) 04:15:45.75 ID:???.net (+71,+29,-51)
    >>257
    話を逸らしてるのはそちら
    HTML4で問題になるかに対して実装の話を持ち出す無意味さに気がつくべき
    259 : Name_Not - 2014/06/07(土) 04:24:31.86 ID:???.net (+22,-10,-128)
    度々いわれてるけど、仕様と実装の違いを理解してないんだろうね

    そもそも、IE6のバグの影響でHTML4時代のブラウザではgetAttributeが正しく働かないから実装上も問題はあるんだけどね
    実装の話をするにしても具体的なブラウザとバージョンを示して論ずるべきでしょ
    260 : Name_Not - 2014/06/07(土) 04:49:02.77 ID:???.net (+57,+29,-53)
    未知の属性は書いても無視されるから問題にならない

    問題になるというのなら、そのブラウザ名を言えばいい。
    261 : Name_Not - 2014/06/07(土) 06:18:07.26 ID:???.net (+69,+29,-88)
    そもそも、最初の「HTML4だと問題起きますか?」は厳密にHTML4の仕様を聞いてる訳じゃなくて
    IE6とかで問題起きますか?と聞いてるだけだとエスパーしてみる
    仕様的な事だったら起きますか?ではなくありますか?だな

    仕様も大事だが、IE6含む全ての主要ブラウザで問題無い事が確認出来れば問題無い
    (IE6の確認は手間なんで俺はやらんが)
    262 : Name_Not - 2014/06/07(土) 10:39:07.27 ID:???.net (+7,-29,-31)
    getattributeが働かないってまじですか?
    jqueryはie6もサポートしていますが
    attrは動かないんですか?
    263 : Name_Not - 2014/06/07(土) 15:26:04.26 ID:???.net (+124,-30,-303)
    >>261
    > ...IE6とかで問題起きますか?と聞いてるだけだとエスパーしてみる
    > 仕様も大事だが、IE6含む全ての主要ブラウザで問題無い事が確認出来れば問題無い
    > (IE6の確認は手間なんで俺はやらんが)
    仕様の話は仕様書を読めば完結するからそこで話は終る

    が、実装の話は自分で試さないと意味がない
    自分で調べも試しにせずに「大丈夫なはず」と適当な話を主張するのは控えていただきたい
    「HTML4を実装するUAで不明な属性は無視されるから問題ない」と主張するするならIE6だけじゃなく、HTML4仕様を実装している主要UA全てで問題ない証拠を掲示すべきだし、それは意見を出したあなたが掲示すべき事だ

    >>262
    IE7- の getAttribute はプロパティアクセスと等価となる
    従って、element.getAttribute('data-*') はプロパティアクセスとして動作する
    http://msdn.microsoft.com/en-us/library/ms536429%28v=vs.85%29.aspx

    > jqueryはie6もサポートしていますが、attrは動かないんですか?
    jQueryは既知の属性は内部的に該当プロパティ名に変換する回避措置を導入しているはず
    しかし、不明な属性には有効に機能しないので、jQueryでもこの問題を回避できない
    264 : Name_Not - 2014/06/07(土) 15:45:10.73 ID:???.net (+3,-30,-49)
    element.getAttribute("class"); は比較的有名なバグだと思うけど、最近の人は知らないんだなあ
    このバグの影響でほとんどの人は getAttribute を使わず、element.className を使ってた
    今でも getAttribute を使う必要性はほぼないけどね
    265 : Name_Not - 2014/06/07(土) 21:16:03.80 ID:???.net (+32,+0,-19)
    ありがとうございます
    http://stackoverflow.com/questions/7361356/how-to-get-data-attribute-in-ie-7
    これによると、jqueryはie7でもうまくやってくれるようです
    266 : Name_Not - 2014/06/07(土) 21:18:18.10 ID:???.net (+7,-29,-8)
    getattributeで読み取れないのにどうやって読み取っているのかが謎ですが・・
    267 : Name_Not - 2014/06/07(土) 21:30:00.58 ID:???.net (+2,-29,-27)
    >>265
    > これによると、jqueryはie7でもうまくやってくれるようです
    "Of course it does not work." とあるようだけど
    268 : Name_Not - 2014/06/07(土) 22:04:56.92 ID:???.net (+10,-16,-9)
    は?それは質問ですが?
    269 : Name_Not - 2014/06/07(土) 22:17:52.07 ID:???.net (+0,-29,-4)
    >>268
    回答も getAttribute の問題を解決するものではないでしょ
    270 : Name_Not - 2014/06/07(土) 22:20:21.44 ID:???.net (+64,+29,-2)
    なんで??
    どう見ても解決してるように見えますが
    271 : Name_Not - 2014/06/07(土) 22:23:28.15 ID:???.net (+134,+29,-32)
    >>263が典型的な悪魔の証明やっててわろた
    今時アホかよw

    問題あるブラウザを言える人は
    私自身を含めていませんでした。

    おしまい
    272 : Name_Not - 2014/06/07(土) 22:28:33.35 ID:???.net (-1,-29,-27)
    昔のIEはclassだけ特別扱いしてたってこと

    だけどしらない属性は特別扱いする理由がないからgetAtrributeで取得できるわけだ
    273 : Name_Not - 2014/06/07(土) 22:35:38.95 ID:???.net (+19,-29,-90)
    >>270
    jQuery.data() は data-* 属性へのアクセサメソッドじゃない
    jQuery独自の機能だよ
    解決法としては一般的だけど、>>266 では IE7- で data-* 属性にアクセスしていると誤解しているように読めたからね
    274 : こう - 2014/06/07(土) 22:38:47.91 ID:???.net (+70,-30,-114)
    Web上のコードを実行するとエラーになります。
    http://pc.nikkeibp.co.jp/article/column/20131028/1110088/

    IE-autologin.jse
    を実行すると、
    行:39
    文字:3
    エラー:オブジェクトでサポートされていないプロパティまたはメソッドです。
    となります。
    何が問題なのでしょうか。
    g_accouunt,gpasswordの設定はしています。
    プログラミング初心者のためすみません。
    よろしくお願い致します。
    275 : Name_Not - 2014/06/07(土) 22:41:37.85 ID:???.net (+33,-30,-147)
    >>273
    You can use it with any data attribute, for example, if you had:

    <div id="DivId" data-something="foo" data-somethingElse="bar">
    You can get the data out by:

    $('#DivId').data('something');
    $('#DivId').data('somethingElse');

    って書いてますが違うんですか?
    IE7でとどうやるの?って聞いてるんだからIE7で可能な答え方をするのが普通の人間ですよね?
    答えているのはアスペ回答者なのでしょうか?
    276 : Name_Not - 2014/06/07(土) 22:49:48.65 ID:???.net (+62,+29,-31)
    >>275
    IE7で解決は出来るよ
    誤解しているように読めたから指摘したまでだけどそうじゃなかったのならすまないね
    まあ、一部勘違いしている人が現れているみたいだけど
    277 : Name_Not - 2014/06/07(土) 22:53:21.15 ID:???.net (-1,-29,-45)
    どういう誤解を?
    IE7でもdata-*属性を何らかの方法で読めるからjqueryはこの機能を実現できたわけですが?
    278 : Name_Not - 2014/06/07(土) 22:56:25.90 ID:???.net (+42,-30,-140)
    >>273
    > jQuery.data() は data-* 属性へのアクセサメソッドじゃない

    半分はずれ。

    dataメソッドで読み書きするのはメモリになる。
    ただしdata-*属性を読み取ることは可能。要するにdata-*属性は初期値だ。
    だからdata-*属性をdataメソッドでアクセスできるかといえば半分正解になる。

    dataメソッドはdata-*属性を書き換えることはできない。
    どうしても書き換えたいならattrメソッドを使う。
    279 : Name_Not - 2014/06/07(土) 23:09:07.59 ID:???.net (+3,-30,-95)
    attrで読み書きするのはタグの属性値。
    data-* というのはHTML5からできた機能だが、attrメソッドでは
    data-がついているからって特別扱いはしておらず、一般的な属性扱い。
    だからdata-hogeを読み書きするにはattr('data-hoge')を使用する。
    attrはHTMLの仕様で定められていないものを含めて属性値すべてを読み書きできる。
    280 : Name_Not - 2014/06/07(土) 23:14:03.64 ID:???.net (+3,-30,-163)
    To set data:

    $('#DivId').data('something', 'foo');
    $('#DivId').data('somethingElse', 'bar');

    とありますし、この説明からは複雑な挙動は読み取れません。
    IE7でもattrを使えばdata-*属性に書き込みできるなら、
    jqueryは内部でそうしているのでは?
    つまりjqueryのdataを使っている限り、IEの挙動を気にする必要はないということでは
    281 : Name_Not - 2014/06/07(土) 23:22:18.60 ID:???.net (+68,+29,-73)
    >>278
    ごめん&ありがとう
    確かに僕の認識が誤っていた事を実際に jquery-2.1.0.js で確認した
    で、実際にどうやって取得しているのかコードを読んでいるけど、どうにもよくわからなかった
    まだまだ精進が足りないなあ
    282 : Name_Not - 2014/06/07(土) 23:33:14.30 ID:???.net (+9,-30,-172)
    わかった
    jquery-2.1.1.js の3704行目か

    // If nothing was found internally, try to fetch any
    // data from the HTML5 data-* attribute
    if ( data === undefined && elem.nodeType === 1 ) {
    name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
    data = elem.getAttribute( name );

    IE7- は elem.getAttribute("data-*") でもアクセスできる
    突き詰めれば、elem["data-*"] でもアクセスできるという事になるのか
    なかなか奇抜な仕様だなあ
    283 : Name_Not - 2014/06/07(土) 23:47:16.24 ID:???.net (+43,-30,-110)
    というかDOMのレベルではgetAttributeしか属性値を
    取得する方法ないでしょ?

    data()はjQueryの機能。

    data-*属性はHTML5の仕様で自由に属性作っても違反にならないものとして
    定義されただけで、昔から属性は勝手に作れる。(HTML的に違反になるだけ)
    そして属性をJavaScriptから取得するメソッドは昔から変わらずgetAttribute
    284 : Name_Not - 2014/06/08(日) 00:08:48.42 ID:???.net (-1,-29,-60)
    >>283
    そうなんだけど、IE7- の getAttribute は DOM に準拠してなくて、プロパティアクセサメソッドだから data-* 属性は取得出来ないと思ってた
    285 : Name_Not - 2014/06/08(日) 01:02:03.21 ID:???.net (+36,-29,-31)
    IE6-8で試した人が居た
    http://dasalog.eg2mix.com/jshtml5-data/

    そう考えると
    http://stackoverflow.com/questions/7361356/how-to-get-data-attribute-in-ie-7
    これのgetAttribute()で取れないってのがあやしいんだけど
    別の原因でうまくいってないんじゃないの?
    286 : Name_Not - 2014/06/08(日) 01:24:47.10 ID:???.net (+57,+29,-16)
    本当いつでもいつまでもIEは悩ましてくれる…IEがなきゃコードも大分スッキリできるのに…
    287 : Name_Not - 2014/06/08(日) 01:43:15.91 ID:???.net (+57,+29,-22)
    どっちかと言えば上の実験の方が怪しいだろ
    stackoverflowは質問者だけでなく数々の回答者のチェックも受けてるんだから
    間違っていれば指摘されてる可能性が高い
    288 : Name_Not - 2014/06/08(日) 01:44:23.31 ID:???.net (+64,+29,-19)
    いやじっさい IE7では俺の方でも試した
    とれたよ
    289 : Name_Not - 2014/06/08(日) 01:49:54.25 ID:???.net (+89,+30,-151)
    >>271
    おまえは頭脳が間抜けなのか?
    「悪魔の証明」はおまえの持論が証明できないことを表しているのだが
    (せっかく、>>263で悪魔の証明にならない自己弁護法を教えてやったというのに、それに気づかず悪魔の証明を持ち出すとは)

    持論が証明できないから相手に反証してもらおうとはどういう理屈だ?
    逆に聞くが、私が自己弁護に失敗したらおまえは反証してくれるのか?反証する必要もないとおまえは思わないのか?
    あまりにもアホらしいので以降レスはしない
    290 : Name_Not - 2014/06/08(日) 02:03:33.29 ID:???.net (+45,-30,-276)
    >>282
    よく考えたら IE7- なら jquery-1.8.3.js を参照すべきだったね
    結論としては、該当コードだけなら jquery-2.1.1.js と変わりなかった

    ■1772行目
    // Try to fetch any internally stored data first
    if ( data === undefined && elem ) {
    data = jQuery.data( elem, key );
    data = dataAttr( elem, key, data );
    }

    ■1806行目
    var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
    data = elem.getAttribute( name );

    >>288
    IE7- は持ってなくて試せてなかったけど、getAttribute('data-*') は期待通りに動作するのか
    出来ればでいいんだけれど、下記3パターンで試してくれると嬉しい

    console.log(element.getAttribute('data-*'));
    console.log(element['data-*']);
    console.log(element.attributes.getNamedItem('data-*').value);
    291 : Name_Not - 2014/06/08(日) 02:24:06.38 ID:???.net (+57,+29,-7)
    問題ないならこんな話が広まるはずもないんだから
    何かはあるんだろ
    292 : Name_Not - 2014/06/08(日) 02:25:52.81 ID:???.net (+76,+29,-76)
    >>290
    3つとも値がとれたよ
    (console.logなどという高級なものはIE7にはござらぬ…)

    俺もその辺のjQueryのコードを見ていて、回避コードとか無いなあと思っていて
    ググって出てきたのが>>285 の前者のページ
    ただ、両者の間には1年くらい間があるから、何か有ったのかもしれないけれど
    293 : Name_Not - 2014/06/08(日) 03:04:10.48 ID:???.net (+26,-30,-127)
    >>292
    ありがとう
    やっぱり、IE7- は element['data-*'] でも参照可能なトンデモ仕様なんだね
    getNamedItem が使えるのなら getAttribute に頼らなければ、仕様上は問題なさそう…と思ったけど、類似バグが合ったら嫌だなあ
    何度もすまないけど、下記2パターンではどうだろう?

    element.attributes.getNamedItem('class').value
    element.attributes.getNamedItem('className').value

    前者のみで期待通りに動作するのが好ましいのだけど

    > (console.logなどという高級なものはIE7にはござらぬ…)
    空気のように使っていて、忘れてたー
    戯言だけど、console.log は早く標準化しないかなあ
    294 : Name_Not - 2014/06/08(日) 03:24:09.39 ID:???.net (+9,-30,-109)
    乗りかかった船

    >>293
    前者は値がとれた
    後者はelement.attributes.getNamedItem('className')の段階でnullだね

    ちなみに getAttributeだと
    alert(element.getAttribute('class')); // null
    alert(element.getAttribute('className')); // class属性の値
    chromeなどと逆か…

    classとclassNameは昔対応した覚えがあるわ、いままでわすれてた
    295 : Name_Not - 2014/06/08(日) 03:41:08.41 ID:???.net (+0,-29,-18)
    >>294
    何度もありがとう
    getNamedItem には getAttribute と同種のバグもなさそうだから、IE7- 対応を踏まえるならこの方法が最善っぽいね
    296 : Name_Not - 2014/06/08(日) 04:34:46.77 ID:???.net (+60,+25,-33)
    面倒くせーな
    ちょっとしたDOMアクセスもjquery使った方がいいってことか
    297 : Name_Not - 2014/06/08(日) 06:02:03.74 ID:???.net (+2,-29,-26)
    'hoge_123'
    のような文字列から数値部分を取り出す簡単な方法はありませんか?
    298 : Name_Not - 2014/06/08(日) 06:24:08.93 ID:???.net (-2,-30,-11)
    var val = ('hoge_123'.match(/\d+/) || [])[0]; // val => 123
    299 : Name_Not - 2014/06/08(日) 15:23:26.77 ID:???.net (+61,+30,-305)
    >>289
    >http://dic.nicovideo.jp/a/悪魔の証明

    悪魔の証明(ラテン語:probatio diabolica)とは、「ある事実・現象が
    全くないことを証明させてはならない」という論争上の原則の一つ。

    概要と使い方
    一般的に、「ないこと」を証明するより「あること」を証明する方が簡単な場合が多い。

    例えば「未知の属性を無視するから問題ない。この点で問題が出るブラウザはない」をめぐって
    「問題が出るブラウザがある派」と「問題が出るブラウザがない派」が対立した場合を考える。

    (あとは面倒だから自分で単語、置き換えな)

    ここで「ない派」がそれを立証するには、現在777万本以上存在する動画の中から屋外を映している
    動画全てを探して閲覧し、その全てに幽霊が登場しないことを確認する必要がある。
    対して、「ある派」が立証するには屋外で撮影された心霊フィルムや怪奇映像などの動画から一本探して示せばよい。

    このように「存在する説」と「存在しない説」が対立した時、それらには立証する際の難易度に大きな差があることが多い。
    そこで、こういった論争と証明について、その困難さなどを考慮すべきという原則を「悪魔の証明」と呼ぶ。
    「ない」派が立証できないからといって、「ある」派が常に正しいとは限らないのだ。

    要するに「無い(いない)ことを証明しろ!」は無茶振りである、というわけである。
    300 : Name_Not - 2014/06/08(日) 15:36:37.32 ID:???.net (-1,-29,-3)
    末尾を指定するために
    /\d+$/
    の方がいい
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について