2011-05-10 120 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工作正常。