2013-09-23 64 views
1

我需要知道何時在頁面上創建特定的iframe。 iframe是在用戶按下按鈕時用JS創建的,並且可以多次創建和銷燬。檢測動態加載的iframe

更新:創建iframe的JS是原始頁面的一部分,所以我無法修改它或訪問它的變量或函數,chrome擴展名被沙盒化。

我無法控制iframe的內容,也無法注入任何JS。 我只能在主頁面注入JS,否則沒有其他控制。

(它是一個Chrome擴展而據我所知,這只是可能注入JS代碼,在主頁面或加載頁面的I幀,但在頁面加載後沒有I幀動態創建的)

對於一瞬間我這樣做:

window.setInterval(function() { 
    $("iframe").each(function(){ 
    if ($(this).attr('id')) { 
     if ($(this).attr('id') == "iframe_id") { 
     //my code 
     } 
    } 
    }); 
}, 1000); 

但我真的想避免因爲性能問題的setInterval。 這可能會以某種方式?

+1

「當用戶按下按鈕時,使用JS創建iframe」因此,您知道何時創建iframe。 –

回答

0

A.沃爾夫大概回答了你的問題已經(所以你知道什麼時候創建的iframe「,「當用戶按下一個按鈕的IFRAME與JS創建」)。

如果你還是不知道什麼如果您有麻煩,但你可能猜到了這一點試一試的()方法這應該有助於

$("iframe").on("click", function() { 
    alert("This is my iframe!"); 
}); 

-

的間隔是不是一個好主意:做...好。選擇iframe的內容,也許你應該嘗試訪問像th這樣的元素是:

$("#iframe-id").contents().find(".what-i-am-looking-for").hide(); 

jQuery的文檔將是非常有益的,如果這是你在找什麼:

http://api.jquery.com/on/

http://api.jquery.com/contents/

乾杯!

+0

我瞭解關於按鈕按下的評論,問題是這是由不受我控制的JS創建的,當我在頁面上注入Chrome擴展的JS代碼時,我只能訪問頁面的DOM,並且我的JS代碼,所以我無法訪問由頁面本身加載的其他JS函數或事件。 – nucka