1

システム管理者とコーディング無知は、単純なジョブ ページを作成しようとします。シンプルな JavaScript 関数があります。

function run(job){
    var ok = confirm("Are you sure?");
    if(ok == true){
        location = 'job.php?op=' + job;
        window.location.href = location;
    } else {
        window.location.reload();
    }
}

シンプルなボタンで呼び出されます:

<button style="color: red" onclick="run('test1');">Test1</button>

私の理解のように、ここでのキーワードは単純です。

これは Chrome では機能しましたが、ボタンは Firefox (両方のブラウザーの現在のバージョン) では何もしません。

スクリプトをデバッグしようとして、.href の前に単純な警告行を追加したので、スクリプトは次のようになります。

function run(job){
    var ok = confirm("Are you sure?");
    if(ok == true){
        location = 'job.php?op=' + job;
        alert(location);
        window.location.href = location;
    } else {
        window.location.reload();
    }
}

...そして、スクリプトはFirefoxでも機能しました。アラートが短時間表示されるのを確認できましたが、すぐにリダイレクトされ、一瞬で消えました。しかし、Chrome ではポップアップが持続するため、これは適切な回避策ではありません。また、Firefox での動作は奇妙で、私のやり方が間違っていることがわかります。

私の質問は、スクリプトの動作に一貫性がないのはなぜですか? また、この動作を回避して両方のブラウザーで一貫性を保ち、追加の alert() を必要としないようにするにはどうすればよいですか?

4

1 に答える 1

3

問題は、その文脈locationと同等である可能性があると思います。ローカル変数をwindow.location作成していないため、暗黙のグローバルになります。location

変数の名前を別の名前にlocation変更するか、「varlocation」を使用してローカル変数に変更します。

    var location = 'job.php?op=' + job;
    alert(location);
    window.location.href = location;
于 2012-10-31T11:25:56.133 に答える