location.hash和iframe与IE版本小于10冲突

时间:2013-05-16 05:12:29

标签: javascript internet-explorer iframe

请有人帮助我。

我制作了一个JS(如下所示的target.js),它使iframe如下所示。

我不确定原因,但onload功能在IE 9,8上不起作用。

当我删除脚本标记时,onload函数工作,窗口滚动到锚点。

<body onload="location.hash='#hashparam';">

HTML

<!-- Target part -->
<script params="parameters" src="target.js"></script>
<iframe src="target.html?parameters">
    <html>
       <head>
       </head>
       <body>
          <script src="target-inner.js"></script>
          many iframes which are made by the script tags
       </body>
    </html>

HTML

</body>

有谁知道原因? 如果您了解它,请教我。


// target-inner.js
isIE = /MSIE/.test(window.navigator.userAgent);
isIE10 = /MSIE 10/.text(window.navigator.userAgent);
if (isIE10 || !isIE) {
    doc.clear();
    doc.open;
}
doc.write("<html><head></head><body>");
doc.write(text);
doc.write("</body></html>");
if (isIE10 || !isIE) {
    return doc.close();
} else {
    return;
}

1 个答案:

答案 0 :(得分:0)

我找到了原因。

在IE9上,iframe阻止了body onload功能。 然后,在我的脚本中没有带有IE9的document.close()。 因为它,onload函数永远被阻止。 但是,在我的脚本中,如果我在使用IE9的document.write之后添加document.close(),IE9就会被粉碎。 所以我改变了实现方式,我将main函数添加到body onload部分。 它有效。

谢谢fmodos的好意。