2016-05-17 7 views
0

Tampermonkeyを使用して以前にjavascriptで作成された要素を取得しています。要素を作成するために使用されるコードは次のようになります。私は、正確なタイミング要素が作成されるかわからないのでTampermonkeyを使用してjavascriptで作成された要素への参照を取得する

var canvas = document.getElementsByTagName("canvas")[0]; 

a = document.getElementById("iframe").contentDocument.createElement("canvas") 

私は

var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0]; 

、これを試してみました私は非同期ループを使用しました。

for (var i = 0; i<2000; i++){ 
    setTimeout(function(){ 
     var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0]; 
     if (typeof canvas !== 'undefined') { 
      console.log("HAS CANVAS"); 
      console.log(i); 
     }else{ 
      console.log("UNDEFINED"); 
     } 
    },1); 
} 

しかし、これは常にundefinedを返します。

キャンバス要素の参照が作成されたら、どのように取得できますか?

答えて

0

私はそれが本当に非同期ループではありません非同期ループ

を使用。タイムアウト値が1であるため、できるだけ早く実行される2000年のタイムアウトを作成しました。

あなたのケースでは適切な間隔があると思います。

var intervalId = setInterval(function(){ 
    var canvas = document.getElementById("iframe").contentDocument.getElementsByTagName("canvas")[0]; 
    if (typeof canvas !== 'undefined') { 
     console.log("HAS CANVAS"); 
     console.log(i); 
     clearInterval(intervalId); 
    }else{ 
     console.log("UNDEFINED"); 
    } 
}, 1000); 

カンバスが1秒に1回(1000 ms)確認され、見つかるまで確認されます。

+0

hmm、strange。キャンバスは検出されません。ここで私はhttp://www.browserleaks.com/canvasを分析しようとしているウェブサイトです。 – Herr

関連する問題