2012-02-28 119 views
1

我有一個網頁內的iframe,我想做一些準備工作。我試過2種方式:如何知道iframe何時準備好?

  • 在父頁面,我用這個

    jQuery('#iframe').load(function() { 
    //my code here 
    }); 
    

當iframe中完成加載該代碼會被執行(我想),但因爲我的IFRAME指向另一個域,所以在這一點上,我無法訪問其內容(跨域問題)

  • 的iframe中,我用這個:

    jQuery('body').ready(function() { 
    }); 
    

當IFRAME開始加載,這是很多比我早想,這樣的代碼不能正常運行該代碼執行。

所以,當iframe中完成加載並準備DOM操縱

我是如何執行的代碼,我搜索,發現easyXDM可能是解決辦法,但我不知道是否有簡單的解決方案存在。

謝謝。

+0

由於它是跨域的,除非您在瀏覽器中禁用跨域策略,否則它永遠不會準備好進行DOM操作。 – 2012-02-28 02:18:30

+0

我有點困惑。 '$(function(){});'應該在iframe中工作得很好。無論如何,您無法從母文檔處理它。所以它應該已經適用於你所擁有的。 – 2012-02-28 02:19:20

回答

1

下劃線擁有我所用的東西這樣一個方便的延遲的方法,嘗試:

$('#iframe').load(function() { 
    _.defer(function(){ 
     //your code here 
    }); 
}); 
+0

什麼是'_.defer'在做什麼以及爲什麼它在這種情況下有所幫助? – 2012-02-28 02:20:27

+0

_.defer在執行代碼之前爲iframe內容頁面提供首先加載的機會。它不能確保內容頁面將首先加載,它會爲您花費一點時間。 – KodeKreachor 2012-02-28 02:26:53

0

dont't使用jQuery,它會使你的javascript知識困惑,

可以使用既然你想知道什麼時候iframe是準備就緒,你想從該iframe跨域訪問的內容下面的代碼

<script type="text/javascript"> 
    function show(){ 
     var iframe=document.getElementById('aa'); 
     var h=iframe.contentWindow.document.body.offsetHeight; 
     alert(h)  
    } 
</script> 
</head> 
<body> 
<iframe id="aa" src="3.html" frameborder="0" scrolling="no" width="100%" height="200" onload="show()"></iframe> 
</body> 
+1

從問題:*「我的iframe指向另一個域」* ...無論您是否使用jQuery,您都無法從另一個域訪問iframe的內容。 – 2012-02-28 04:53:45

0

,我覺得easyXDM將是一個不錯的選擇。

你基本上可以實現this example,並簡單地將你的代碼添加到「onReady」方法。

相關問題