2011-05-10 216 views
0

我有一個頁面,它具有這樣的結構;iframe onload事件

<body onLoad="LoadPage()"> 
     <iframe src="pg1.html"> 
     <p>Your browser does not support iframes.</p> 
    </iframe> 
    <iframe src="about:blank"> 
     <p>Your browser does not support iframes.</p> 
    </iframe> 
    </body> 

現在的身體負荷,我設置了第二的iframe「源」的價值。 如果我把身體的onload,功能似乎越來越調用兩次......那麼,有沒有用,我可以調用該函數來設置src任何其他方式..

<script type="text/javascript"> 
     function LoadPage(){ 
      var pdfVal = document.forms[0].pdf_val.value; 
      document.getElementById('ipad_pdf_link').href = pdfVal; 
     } 
     </script> 
+1

顯示'LoadPage()'和其他腳本 – ariel 2011-05-10 08:50:00

+0

我也補充說,現在.. – hmthr 2011-05-10 08:52:27

回答

1

我不知道爲什麼它加載了兩次,但你可以,而不是做它的onLoad,使用jQuery:

<script> 
function loadPage() { 
    var pdfVal = $("name=[pdf_val]").val(); 
    $('#ipad_pdf_link').attr("src", pdfVal); 
} 

$(function() { // called when the page finishes loading 
    loadPage(); 
}); 
</script> 

jQuery是更強大的處理瀏覽器的差異,我敢肯定將爲您節省很多麻煩。

參考:

1

你可以把

<script type="text/javascript"> 
    LoadPage(); 
</script> 

在HTML的底部,而不是在onload事件上,並且在頁面加載完成時它仍然會被調用。

+0

,這不是一個好的做法 – ariel 2011-05-10 09:00:29

+0

THX爲that..Actually有兩件事情... 1)在主要頁面的頁面加載.. 。和2)頁面加載的iframe頁面。所以我應該使用相同的兩個地方? – hmthr 2011-05-10 09:00:35

+2

爲什麼這不是一個好習慣?無論如何,我希望函數在DOM準備好後運行.. – hmthr 2011-05-10 09:52:16

0

加載兩次是最有可能與此有關: http://msdn.microsoft.com/en-us/library/ie/hh180173%28v=vs.85%29.aspx

我有哪裏IE9調用初始化函數兩次,當設定的情況下, <body onload="x()">。我們有一個系統,我們的舊asp頁面運行在iframe中,其中有幾十個。他們都使用相同的舊語法。第一次初始化調用是正確的,但第二次調用是作爲最上面的。這基本上弄糟了,因爲在iframe window.top沒有應該有的功能,因爲它是iframe窗口本身。在IE8中,IE9的IE8模式,Chrome和Firefox工作正常。