1

私はしばらくの間この問題を調査してきましたが、Google Chrome には Javascript に関する膨大な量の問題があると思われるため、同じ問題を抱えている人を見つけるのに苦労していました。

問題は次のとおりです。アンカーが div の内容を置き換える新しい関数を呼び出すと、Javascript による変更前の div のデフォルトの内容に戻る前に、適切な結果がしばらく表示されます。

スクリプトは次のとおりです。

function prologueThree() {
    document.getElementById('content').innerHTML = document.getElementById('prologue3').innerHTML;
}

function prologueFour() {
    userName = document.getElementById('yourname').value;
    if(userName.length === 0) {
        alert("Erm... are you sure that\'s your name?");
        prologueThree();
    } else {
        document.getElementById('content').innerHTML = '<center> \
<img src="http://pokemonroleplay.thedevhome.net/images/Gameboy/characters/red.png"><br> \
Right, so your name is ' + userName + '! \
<br><br> \
<a onclick="prologueFive()"><button>>>Continue>></button></a></center>';
    }
}

これはスクリプトのほんの一部ですが、全体は Firefox で正常に動作し、最初の 3 つのプロローグ関数は Chrome で正常に動作します。prologueFour を実行しようとしたときだけ、びっくりして元に戻ります。Chrome 開発者コンソールも試しましたが、エラーは記録されません。

よろしくお願いいたします。

4

2 に答える 2

2

私はあなたのサイトに行きましたが、デフォルトの動作の実行を妨げずにフォームonclickのボタンに をバインドしていることに気付きました。デフォルトの動作は、ページを更新するフォーム送信であり、その結果、場所を失い、最初に戻るようになりますsubmit. 以前のプロローグで行ったように、プレーンな古いボタンまたはアンカー タグを使用します。何らかの理由で送信を使用することを主張する場合は、次のようにデフォルトの動作を防ぎます。

function prologueFour(e) {
    typeof e.preventDefault === 'function'
        ? e.preventDefault()
        : e.returnValue = false;
    // now rest of code can continue without page refresh
}
于 2012-12-22T03:00:17.730 に答える
0

他の問題があるかどうかはわかりませんが、>>Continue>>標準に準拠した html ではないため、問題が発生する可能性があります。&gt;代わりに使用する必要があります。

于 2012-12-22T02:44:04.157 に答える