2016-05-17 41 views
0

我使用Tampermonkey獲取之前使用javascript創建的元素。用於創建元素的代碼看起來是這樣的:使用Tampermonkey獲取對使用javascript創建的元素的引用

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

我試圖

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

這:

var canvas = document.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

我用了一個異步循環

這是不是真的異步循環。您剛剛創建了2000個超時,這些超時將盡快執行,因爲超時值爲1.

我認爲在您的病例間隔內是合適的。

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

它將一旦在第二(1000毫秒)檢查帆布,直到找到一個。

+0

嗯,奇怪。它不檢測畫布。這裏是我試圖分析http://www.browserleaks.com/canvas的網站。 – Herr

相關問題