3

javascript と firefox 10.0.11 で奇妙な問題が発生しています。IE でテストしましたが、問題を再現できません。

オブジェクトに関する情報を表示するページに移動するリンクがあります。JavaScript を使用して、このページに機能を追加しました。JavaScript が有効になっている場合、アンカー リンクは代わりに JavaScript 関数にリダイレクトされます。

<a href="/Comment?id=1186281" onclick="return CommentSubmit(1186281)">Comment</a>
function CommentSubmit(id) {
    $("#DynForm").append("<input type='hidden' name='id' value='" + id + "' />");
    $("#DynForm").attr("action", "/Comment/Index");
    $("#DynForm").submit();
    return false;
};

ご覧のとおり、javascript はキー値を持つ非表示の入力タグを挿入します。JavaScript を使用しないバージョンは正常に動作しますが、JavaScript でいくつかの問題が発生します。Comment任意の項目のボタンを初めてクリックすると、問題なく動作します。戻って任意のCommentリンクをクリックすると、最初のリンクをもう一度クリックしたかのようにページが表示されます。調べてみると、後続の「戻る」と「クリック」のたびに、URL パラメーターが「スタック」されていることに気付きました。

/Comment?id=1
/Comment?id=1&id=2
/Comment?id=1&id=2&id=3

(戻ることなく) 再度ページに移動すると、最初のリンクが再び機能し、この奇妙な動作が開始されます。いくつかのリンクをクリックした後にページ ソースを見るとhidden、これらの追加パラメーターを追加する新しいフィールドが表示されません。これは既知の問題ですか? これをさらにデバッグして修正するにはどうすればよいですか?

4

1 に答える 1

6

これはバグではなく、機能です:)

ブラウザはページをキャッシュしているので、戻ったときにページを更新するのではなく、入力フィールドが非表示になっている元の状態に戻っています。

もう一度追加する前に、そのフィールドを削除するだけです。

function CommentSubmit(id) {
    $("input[name=id]").remove();
    $("#DynForm").append("<input type='hidden' name='id' value='" + id + "' />");
    $("#DynForm").attr("action", "/Comment/Index");
    $("#DynForm").submit();
    return false;
};
于 2013-01-30T23:34:45.987 に答える