+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net (711レス)
1-

32: 2016/11/29(火)10:04 ID:??? AAS
誘導。

■JavaScriptスレ
JavaScript の質問用スレッド vol.131
2chスレ:hp
JavaScript の質問用スレッド vol.122
2chスレ:tech
JavaScript(ECMAScript)質問用スレッド vol.122
2chスレ:tech

■ライブラリスレ
JavaScript ライブラリ総合質問所 vol.5
省3
33
(1): 2016/12/01(木)21:46 ID:??? AAS
$('div[id="XXXXX"]')
$('div[id=XXXXX]')
ダブルクオーテーションで囲っても囲わなくても動くのですが、
どちらでも良いのでしょうか?
34: 2016/12/01(木)22:09 ID:??? AAS
>>33
囲まなくて動くからどっちでもいいよ。
!とか$みたいな半角の記号を含むidだと囲む必要があるから、その時だけ囲めばok。

補足だけど、idで選択する時は普通は
$('div#XXXXX')
あるいは
$('#XXXXX')
と書くのが一般的。
35: 2016/12/03(土)15:16 ID:6IkFDzpo(1) AAS
俺は特定のタグすべてを対象としないのであれば
ほとんどタグ名を書かないかな。
36
(2): 2016/12/11(日)11:23 ID:Tn2z+E9L(1/7) AAS
【質問】JSのDOMContentLoadedが発火しません。

■事象
iframeを動的に作成(createElement)して、
addEventListenerに「DOMContentLoaded」を追加しているが、
iframeのsrc先のDOM読み込み完了時にイベントが発生しません。
37
(2): 2016/12/11(日)11:24 ID:Tn2z+E9L(2/7) AAS
■コーディング
var parent_obj = document.getElementById("top");
var obj = document.createElement('iframe');

if(obj.addEventListener){
obj.addEventListener("DOMContentLoaded",xxx);//★これが発火しない
//obj.addEventListener("load",xxx);//☆遅い
}else if(obj.attachEvent){
obj.attachEvent("onload",xxx);
}else{
obj.onload = xxx;
省6
38
(2): 2016/12/11(日)11:25 ID:Tn2z+E9L(3/7) AAS
>>36
>>37
■やりたい事
addEventListener("load",xxx)だと画像読み込み後にイベントが発生するので、遅いです。
iframeのソースが返ってきた直後にイベントを呼びたいのです。

■質問
なぜDOMContentLoadedが発火しないのでしょうか。
コーディングが悪いのでしょうか?

それともcreateElement('iframe')はDOMContentLoadedのイベントに対応していないのでしょうか?
その場合、上記【やりたい事】の代案はございますでしょうか?
39
(1): 2016/12/11(日)12:53 ID:??? AAS
>>38
HTMLIFrameElementにはcontentWindowおよびcontentDocumentというプロパティが存在しますので、そちらのイベントを拾えばよいのではないでしょうか。

obj.contentDocument.addEventListener("DOMContentLoaded",xxx);

引用元
外部リンク:ja.stackoverflow.com
40: 2016/12/11(日)13:42 ID:??? AAS
if(obj.addEventListener){
}else if(obj.attachEvent){

いまどきこんなコード書くなよ。
古いブラウザ切り捨てでいいならaddEventListener使えばいいし、
IE8とかにも対応させるならjQueryを使うべきだ。
コードを自分で書いたならばその行をテストしなきゃいけないんだぜ?
41
(3): 2016/12/11(日)15:57 ID:??? AAS
> HTMLIFrameElementにはcontentWindowおよびcontentDocumentというプロパティが存在しますので

マジレスするとコレでは無理。

なぜならiframeの中のwindow(さらにその中のdocument)に触れるとは限らないから
触れると確定するのはiframeのsrcが設定された後。同じドメインであるなど
参照する権限があれば触れる。だから先にsrcを設定する必要がある。

だがsrcを設定した時点で読み込みが始まる。
つまり読み込みが始まった後にDOMContentLoadedをaddEventListenerしても
もう読み込まれてしまっているかもしれない。この場合は発火しない。

最初の一回はネットワークから取ってくるので処理が遅く、
addEventListenerが間に合って発火するかもしれないが
省3
42: 41 2016/12/11(日)15:58 ID:??? AAS
マルチポスト先を見てもどうやらこの問題に触れているのはなさそうだなw
こういうのは経験が物を言う。やったことがある俺じゃないと気づきにくい
43
(1): 2016/12/11(日)16:16 ID:??? AAS
俺は質問者ではないんだけど、同ドメインだとしても、src設定した直後にcontentWindowって触れないよな?
44
(1): 2016/12/11(日)16:27 ID:??? AAS
そうだったかな?こまないところは忘れた。
作り方によると思う。古いブラウザ対応もあって
about:blankも併用していたからな。
45
(1): 2016/12/11(日)16:35 ID:??? AAS
あ、ごめん確かに作り方によるわ
質問のコードをそのまま使うとアクセスできないだけだった
46: 2016/12/11(日)21:01 ID:Tn2z+E9L(4/7) AAS
>>39

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないのですね。
それでは上記【やりたい事】の代案はございますでしょうか?
47: 2016/12/11(日)21:04 ID:Tn2z+E9L(5/7) AAS
>>41

丁寧なご回答ありがとうございます。

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないみたいののです。
>>41 さんのご指摘のタイミングの問題もあります。
それでは上記【やりたい事】の代案はございますでしょうか?

一応「2秒待って」という苦肉の策はありましたが、
別の綺麗な順序保障の方法はないでしょうか?
48: 2016/12/11(日)21:05 ID:Tn2z+E9L(6/7) AAS
>>43-45

>>41

丁寧なご回答ありがとうございます。

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないみたいののです。
それでは上記【やりたい事】の代案はございますでしょうか?

一応「2秒待って」という苦肉の策はありましたが、
別の綺麗な順序保障の方法はないでしょうか?
49: 2016/12/11(日)21:06 ID:Tn2z+E9L(7/7) AAS
あ、元々の質問は以下です。
>>36-38
50: 2016/12/11(日)21:21 ID:??? AAS
クロスドメイン先は自分で管理してるものなの?
51: 2016/12/11(日)22:28 ID:??? AAS
このマルチポスト奴またきたのか
>>20-22
1-
あと 660 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.010s