2016-05-17 2 views
0

Ich benutze Tampermonkey, um ein Element, das zuvor mit Javascript erstellt wurde. Der Code verwendet, um das Element zu erstellen wie folgt aussieht:bekommen einen Verweis auf ein Element mit Javascript mit Tampermonkey erstellt

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

Ich versuchte

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

und diese:

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

Da ich weiß nicht genau das Element Timing wird erstellt , Benutzte ich eine asynchrone Schleife

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); 
} 

aber das gibt immer undefined zurück.

Irgendeine Idee, wie ich die Canvas-Element-Referenz erhalten könnte, sobald sie erstellt wird?

Antwort

0

ich verwendet, um eine asynchrone Schleife

Es ist nicht wirklich asynchrone Schleife. Sie haben gerade 2000 Timeouts erstellt, die so schnell wie möglich ausgeführt werden, da der Timeout-Wert 1 ist.

Ich denke in Ihrem Fall sind Intervalle geeignet.

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); 

Es wird einmal in einer Sekunde (1000 ms) nach Canvas überprüft, bis eins gefunden wird.

+0

hmm, komisch. Es erkennt keine Leinwand. Hier ist die Website, die ich versuche zu analysieren http://www.browserleaks.com/canvas. – Herr

Verwandte Themen