我有一个这样的网页(伪代码):
<script>
function clicked(e) {
url = (find first a inside e).href;
window.location.href = url;
}
</script>
<div onclick="clicked(this)">
<a href="www.google.com>google</a>
</div>
这种行为在chrome和其他浏览器中有所不同。当我点击div上的 MIDDLE 按钮时,我得到以下行为:
我知道如何解决这个问题,但我的问题是遵循W3C标准的正确行为是什么?
在this document中,有一条声明说:
必须使用assign()和replace()方法进行导航 作为源浏览的现任脚本的浏览上下文 上下文。
如果我理解正确,这意味着在这一步JS仍在使用原始窗口
Here我找到了浏览上下文导航的说明。似乎没有解释为什么要打开新标签。第2步允许创建新窗口,但我不确定此步骤适用于我的情况。
在所有这些情况下,用户代理可以另外提供打开新资源...
否则,浏览器似乎没有理由打开新标签页。
是否有一些标准说明在这种情况下该怎么做,或者这是浏览器作者如何处理它的选择?这是Chrome或FF,IE,Opera中的错误吗?我错过了什么吗?