我有两个脚本标记:一个用于设置我的环境,另一个用于读取该设置并对其进行操作。我已将错误减少到以下内容:
<script>
window.myVar = 'hello world';
</script>
<script>
var myVar;
console.log(window.myVar); // Should be 'hello world'
</script>
在IE9 +,Chrome等中'hello world'
被记录。但是,在IE8中,undefined
会被记录。是什么给了什么?
答案 0 :(得分:1)
这似乎是一个模糊的IE8错误。
通过简单地将所有JS放入单个脚本标记中,您可以完全避免这个问题。如果你需要将它们放在单独的脚本标签中,不确定是否有一个很好的解决方法,但我很乐意听到它。
<!-- This triggers the bug in IE8. -->
<script>
window.myVar = 'hello world';
</script>
<script>
var myVar;
console.log(window.myVar); // Should be 'hello world'
</script>
<!-- This does not trigger the bug in IE8. -->
<script>
window.myOtherVar = 'hello world again';
var myOtherVar;
console.log(window.myOtherVar); // Should be 'hello world again'
</script>
Here it is in a JSFiddle。如果您在打开F12开发人员工具的情况下在IE8中启动它,您会看到undefined
然后'hello world again'
已记录。
答案 1 :(得分:0)
如果这两个都是你的脚本,为什么不同时定义变量(如果必须定义两次)?
<script>
window.myVar = 'hello world';
</script>
<script>
window.myVar = window.myVar || undefined;
console.log(window.myVar); // Should be 'hello world'
</script>