iframe onload事件

时间:2011-05-10 08:48:17

标签: javascript html css iframe

我有一个具有这样结构的页面;

<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设置了“src”值。 如果我调用body onload,函数似乎被调用了两次......那么有没有其他方法可以调用函数来设置src ..

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

3 个答案:

答案 0 :(得分:1)

你可以把

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

在HTML的底部,而不是在onload事件上,并且在页面加载完成后仍然会调用它。

答案 1 :(得分:1)

我不确定它为什么会加载两次,但您可以使用jQuery来代替在onLoad上执行此操作:

<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在处理浏览器差异方面更加强大,我相信将来会为您节省很多麻烦。

参考:

答案 2 :(得分:0)

加载两次很可能与此相关: http://msdn.microsoft.com/en-us/library/ie/hh180173%28v=vs.85%29.aspx

我有一个IE9调用init函数的情况,当它设置为<body onload="x()">时。我们有一个系统,我们的旧asp页面在iframe中运行,并且有几十个。所有这些都使用相同的旧语法。第一个init调用正确,但第二个调用是最顶层的。这基本上搞砸了,因为在iframe window.top中没有应该有的功能,因为它本身就是iframe窗口。在IE8中,IE9的IE8模式,Chrome和Firefox都运行良好。