2015-02-06 65 views
0

我從外部網站(twitter提要)加載iframe,並且想要使用JS來更改CSS樣式。加載iframe內容後觸發js函數

的JS代碼:

$(".twitter-timeline").contents().find(".p-name").css("font-size","16px"); 
}); 

的問題是,我似乎無法得到iframe的內容已加載後,這個執行。我試圖打開功能:

$('iframe.twitter-timeline').load(function(){ 

$('#twitter-widget-0').load(function(){ 

但他們似乎iframe中完成加載之前觸發。刷新頁面時,樣式按預期應用。但是,如果我清除我的緩存並重新測試,它將無法工作,除非我刷新。

如果我使用

window.setTimeout(function(){ 

,並給它3秒左右,它的工作原理,具體情況取決於網絡速度,所以我不喜歡使用它。

回答

0
<iframe id='myframe' src='http://url/doit.php' onload="onLoadHandler();"></iframe> 

<script type="text/javascript"> 
function onLoadHandler() { 
    $(".twitter-timeline").contents().find(".p-name").css("font-size","16px"); 
} 
</script> 

設置iframe的onload處理程序,然後在函數內運行代碼。

+0

感謝,我應該提到,Twitter的方式確實是他們在寫iframe代碼從一個JS代碼,所以我不能添加任何東西,據我所知。 – midknyte 2015-02-06 09:13:20

+0

當您設置加載函數時,iframe是否存在?你可以嘗試將它記錄下來'console.log($('iframe.twitter-timeline')。length> 0);'如果它不存在,也許你的負載處理程序沒有被設置。你可能需要在Twitter代碼運行後運行它。 – kartikluke 2015-02-06 09:52:12