我有一个具有这样结构的页面;
<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>
答案 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都运行良好。