2012-04-12 138 views
2

我嘗試訪問由jquery colorbox插件生成的iframe的內容幾個小時沒有成功。使用jquery訪問colorbox Iframe內容

繼承人我的代碼:

$(".ListView li a").colorbox({ 

iframe:true, 
width: "50%", 
height: "50%", 
opacity: 0.5, 
onComplete: function() { 
alert("complete"); 
$("iframe").contents().find("p").css("color","#f00"); 
} 
}); 

它加載一個文件並顯示它。如此精細。當iframe加載完成時,還會引發警報消息。但我無法通過jquery選擇器訪問框架內的元素。 iframe中的所有p元素都不會發生任何變化。

無論

if($("iframe").contents().length > 0) 
{ 
alert("exists");  
} 

也不

if($("iframe").length > 0) 
{ 
alert("exists");  
} 

是成功的。頁面上沒有其他iframe,我也嘗試插入類名稱。

對於「正常」的iframe,直接插入到html中而不是由colorbox生成,我的函數正在工作。

謝謝產生

代碼:

<div id="colorbox" class="" style="display: block; padding-bottom: 50px; padding-right: 50px; top: 128px; left: 476px; position: absolute; width: 902px; height: 207px;"> 
<div id="cboxWrapper" style="height: 257px; width: 952px;"> 
<div> 
<div style="clear: left;"> 
<div id="cboxMiddleLeft" style="float: left; height: 207px;"></div> 
<div id="cboxContent" style="float: left; width: 902px; height: 207px;"> 
<div id="cboxLoadedContent" style="display: block; width: 902px; overflow: auto; height: 187px;"> 
<iframe class="cboxIframe" frameborder="0" name="cbox1334265249803" src="qtest.html"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<body> 
<a href="#">Link</a> 
<p>Formatted Text</p> 
</body> 
</html> 
</iframe> 
</div> 
<div id="cboxLoadingOverlay" style="float: left; display: none;"></div> 
<div id="cboxLoadingGraphic" style="float: left; display: none;"></div> 
<div id="cboxTitle" style="float: left; display: block;"></div> 
<div id="cboxCurrent" style="float: left; display: none;"></div> 
<div id="cboxNext" style="float: left; display: none;"></div> 
<div id="cboxPrevious" style="float: left; display: none;"></div> 
<div id="cboxSlideshow" style="float: left; display: none;"></div> 
<div id="cboxClose" style="float: left;">close</div> 
</div> 
<div id="cboxMiddleRight" style="float: left; height: 207px;"></div> 
</div> 
<div style="clear: left;"> 
</div> 
<div style="position: absolute; width: 9999px; visibility: hidden; display: none;"></div> 
</div> 
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable" style="display: none; z-index: 1000; outline: 0px none;" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-box-trash-dialog"> 

回答

3

使用iframe時,只要將iframe元素添加到文檔中,onComplete實際上會觸發。如果要查詢內容,則必須等待DOM準備就緒。父文檔無法知道iframe的DOM何時準備就緒,它只能監聽窗口的onload事件。

但是,您可以通過將fastIframe屬性設置爲false來觸發colorbox等待並觸發iframe的onload事件觸發onComplete函數。例如:

$('a.example').colorbox({iframe:true, fastIframe:false, width:500, height:500}) 

當然,這一切假設的iframe從同一個域父始發,並且沒有安全限制導致您無法訪問iframe的內容。

+0

非常感謝! Google搜索「完整的colorbox」後,我發現這個網頁:http://groups.google。com/group/colorbox/browse_thread/thread/77e89cc514d43abf 你在哪裏解釋給別人。現在它真棒。 – simonheinrich 2012-04-14 17:15:05

0

有一個紹興德勝瀏覽器解決方案來訪問一個iframe的內容,你可以讀到它here

另外,你可以通過jQuery訪問你的iFrame的內容,閱讀更多here

這兩種解決方案都可以通過ID找到您的iframe,因此您需要一個id來使用這些解決方案。我希望這有幫助。

+1

是的,我知道如何訪問IFRAME。當我將