Dan*_*ton 3 javascript window function return-value
由于这里不应该枚举的原因,我发现将函数附加到窗口对象可能是有用的.但是,我发现了相当奇怪的行为.
<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>
Run Code Online (Sandbox Code Playgroud)
为什么调用具有返回值的函数决定替换窗口的内容?这种情况发生在Firefox和Opera中,但不适用于IE9,Chrome或Safari(均在Win7上测试过).
所以问题是:是否有某种文档指定了这种行为?或者这是FF/Opera中的(已知)错误?
[编辑]有趣的是(根据答案和评论,因此很多)似乎滥用window对象是一个红鲱鱼在这里.
您的代码运行正常 - 浏览器正在完成您要告诉它的操作.
JavaScript行在Web浏览器的URL栏中有效,浏览器将立即执行它们.(尝试一下:在URL栏中写一个警告框,点击回车,然后看看会发生什么.)通过将JavaScript编写到href锚标签中,您将浏览器的位置(换句话说,URL)设置为那一行JavaScript.因为你的一个函数返回一个值,所以该文件被该值覆盖; 这是正常的浏览器行为.
| 归档时间: |
|
| 查看次数: |
12746 次 |
| 最近记录: |