4

Load the following example in different browsers.

<!DOCTYPE html>
<html>
<body>
   <a onclick='document.write("text <a href=\"#a\">link</a>");document.close();'>click</a>
</body>
</html>

When the page is loaded click the link. Doing this will rewrite the page using document.write which will contain an anchor named "link".

In IE8, IE9, Chrome latest when this link is clicked it will not lead to page load.

In Firefox (tested with latest and FF6) clicking the link reloads the original page.

Firefox behavior seems to be incorrect as using anchors should not lead to page loads. If document write is not used clicking on anchors won't lead to page load even in Firefox.

Is there a workaround for this?

The goal would be to use document.write. This sample just simulates that we'd like to load another complete webpage including lot of javascript code with AJAX which needs to run properly after the inclusion.

4

2 回答 2

1

在这方面的规范write()有些不清楚:

将文本字符串写入由 open() 打开的文档流。

不清楚的存在:如果流还没有/不再打开会发生什么?

火狐将

在没有调用 document.open() 的情况下写入已经加载的文档将自动执行 document.open 调用。

由于这有效地创建(阅读:“加载”)新文档,因此执行导航和页面加载。在 Firefox 中没有办法解决这个问题。您当然可以提交一个错误并要求 Chrome/IE 奇偶校验以开放网络。

于 2013-09-06T19:18:24.053 回答
0

您好使用 ie8 ie9 和 chrome 进行了一些测试,然后做了一些研究。当您构建您的网站并在本地测试它时,javascript 或在您的情况下脚本不会总是在 ie8 或 ie9 上运行,因为您的活动 x 控件已关闭,但如果您要将页面上传到服务器然后对其进行测试,您会看到document.write 确实可以在线工作。我在线测试了以下内容,然后离线测试了它,它可以在线运行

      <head>
    <title>Untitled Page</title>
<script type="text/javascript">
    function myFunction()
{

document.write("text <a href=\"#a\">link</a>");
document.close();
}
   </script> 
</head>
<body>
<label onclick='document.write("text <a href=\"#a\">link</a>");document.close();'>click</label>
<a onclick="myFunction()">click</a>
</body>     

正如您所看到的,它只是不同地使用了相同的代码,但这不是重点。要正确调试并让脚本正常工作,请按如下方式激活您的活动 x 控件 对于 windows xp,请转到控制面板,然后转到 Internet 选项。在工具菜单上,单击 Internet 选项,然后单击安全选项卡。单击 Internet 区域。单击自定义级别。在“安全设置 - Internet 区域”对话框中,单击“脚本”部分中的“为活动脚本启用”。这是一个链接,可以帮助您使用各种浏览器,让它们在本地运行脚本。 http://www.enable-javascript.com/

于 2013-09-06T19:01:01.543 回答