1

作業中のテンプレートプロジェクト用の小さなコードがあります。3つの別々の場所を指す3つの別々のボタンがあります。コンテンツプロバイダーにとって簡単にするために、次のページをロードするための最小限のルーチンを呼び出すこれらのボタンがあります。

コードは次のとおりです。

    /* navigation functions here for clarity and ease of editing if needed */
    prevURL    = 'ch0-2.html';
    nextURL    = 'ch2-1.html';
    manURL     = 'ch1-2.html';

    function prevPage() {
       window.location = prevURL; 
    }

    function nextPage() {
        window.location = nextURL;
    }

    function goManager() {
        window.location = manURL;
    }

これはFirefoxとChromeで完全に機能しますが、InternetExplorerでは失敗するようです。

IE(F12)で開発者ツールを開くと、次のメッセージが表示されます。

SCRIPT5009:'manURL'は未定義です

位置情報(43行目、文字13)は、コードの「window.location=manURL」部分を指しています。

ただし、開発ツールを開いた後、F5キーを押してページをリロードすると、IEを閉じて再度開くまでボタンはエラーなしで機能します。IEを再度開くと、応答に失敗し、同じ「未定義」エラーが発生します。

私は困惑しています。誰かアイデアはありますか?

UPDATE 変数宣言が不十分であり、代わりにwindow.location.hrefを使用できることを知っています。ここで重要なのは、これらの重要な方法のすべてで同一である他の2つのコードは、どちらの方法でも完全に機能するということです。

epascarelloは私を正しい軌道に乗せました。すべてのconsole.logコマンドを削除すると、すべてが機能し始めます。なぜこれが起こるのか疑問に思っているので、私を助けてくれたepascarelloの功績を認めたいと思います。

4

3 に答える 3

2

開発者ウィンドウが開いていない場合、IE にはコンソール コマンドがありません。したがって、それらがそこにある場合、コードは実行されません。エラーになります。

行をコメントアウトするか、不足しているものを追加するコードを追加できます。

if (typeof console === "undefined") {
   console = {
       log : function(){},
       info : function(){},
       error : function(){}
       //add any others you are using
   }
}
于 2013-03-06T19:28:03.347 に答える
1

設定してみてください

window.location.href

window.locationだけではありません。

ソース: http ://www.webdeveloper.com/forum/showthread.php?105181-Difference-between-window.location-and-window.location.href

于 2013-03-06T18:50:02.273 に答える
0

変数を使用する前に必ず変数を定義してください。明示的(意図を表す)にすることをお勧めします。

したがって、このように変数を定義します。

var prevURL    = 'http://google.com';
var nextURL    = 'http://msn.com';
var manURL     = 'http://stackoverflow.com';

使ってみることができます

window.location.href

違いについては、この投稿を参照してください

提案: 私たちのためにjsfiddle.netを作成して、簡単にガイドできるようにしてください

于 2013-03-06T18:55:56.057 に答える