窗口对象上的javascript函数在被调用时会替换该窗口的内容吗? (有时??)
由于这里不应该枚举的原因,我发现将函数附加到窗口对象可能是有用的。但是,我发现了相当奇怪的行为。
<html><head><script>
function sideEffect() { console.log("Side effect happened. Wewt."); }
window.foo = function() {
sideEffect();
return true;
}
window.bar = function() {
sideEffect();
}
</script></head>
<body>
<a href="javascript:window.foo();">Replaces entire window with "true"</a>
<br />
<a href="javascript:window.bar();">Doesn't</a>
</body></html>
为什么调用具有返回值的函数决定替换窗口的内容?这种情况发生在Firefox和Opera中,但不适用于IE9,Chrome或Safari(均在Win7上测试过)。
所以问题是:是否有某种文档指定了这种行为?
或者这是FF / Opera中的(已知)错误?
[编辑]有趣的是(根据回答和评论),似乎滥用window
对象是一个红鲱鱼。
没有找到相关结果
已邀请:
3 个回复
箩冀娥
,您可以设置浏览器的位置(换句话说,URL)到那一行JavaScript。因为你的一个函数返回一个值,所以该文件被该值覆盖;这是正常的浏览器行为。
靛取糕奖穿
:
如果它仍然这样做(我认为不会),添加一个`||假':
而忽略了“不要那样做”的评论 - 你所做的事情没有任何问题,但是所有的ѭ6都是没有意义的(无论如何,一切都在
)
寿柬窟年