0

2 つのスクリプト タグがあります。1 つは環境をセットアップするためのもので、もう 1 つはそのセットアップを読み取ってそれに基づいて動作するためのものです。バグを次のように減らしました。

<script>
    window.myVar = 'hello world';
</script>
<script>
    var myVar;
    console.log(window.myVar); // Should be 'hello world'
</script>

IE9+ では、Chrome など'hello world'がログに記録されます。ただし、IE8undefinedでは代わりにログに記録されます。何を与える?

4

2 に答える 2

1

これはあいまいな IE8 バグのようです。

すべての JS を 1 つのスクリプト タグに入れるだけで、問題を完全に回避できます。それらを別々のスクリプトタグにする必要がある場合の優れた回避策はわかりませんが、ぜひ聞いてみたいです.

<!-- 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>

ここでは JSFiddle にあります。F12 開発者ツールを開いた状態で IE8 でプルアップすると、表示undefinedされて'hello world again'ログに記録されます。

于 2013-09-25T17:34:36.857 に答える
0

これらが両方ともスクリプトである場合、変数を (2 回定義する必要がある場合) 両方とも同じ方法で定義してみませんか?

<script>
 window.myVar = 'hello world';
</script>
<script>
 window.myVar = window.myVar || undefined;
 console.log(window.myVar); // Should be 'hello world'
</script>
于 2013-09-25T17:43:06.637 に答える