7

<select>単一の<option>要素を含むタグがあります:

<select id="someselect">
  <option value="2">B</option>
</select>

シングル<option>は後でjQueryを使用して置き換えられます。オプションの新しいリストには、常に古いオプションが含まれています。

selected = $('#someselect').val();
$('#someselect').html('<option value="1">A</option><option value="2">B</option>').val(selected);

これは期待どおりに機能します。ただし、Google ChromeのWebページから移動して、[戻る]ボタンをクリックすると、奇妙なことが起こります。selectタグは初期状態に戻ります(意味があります)が、単一の<option>要素は選択されていません!

Chromeでこの動作が発生する原因は何ですか?

最小限の実用的な例を作成しました:http://dl.dropbox.com/u/27566470/backdemo.html
最初は1つだけ<option>です。最初に[クリック]をクリックしてオプションを置き換え(ただし、[B]オプションを選択したままにします)、[Google]をクリックして移動し、Chromeの[戻る]ボタンを使用して、<select>オプションが1つだけのタグを表示します。選択されていない。

編集:明確にするために、私はこれを修正する方法に興味がありません。Chromeがこのように機能する理由に興味があります。戻るボタンを使用した後に元の(変更されていない)DOMを提供することは理にかなっていますが、選択オプションのみが選択されていないのはなぜですか?

4

3 に答える 3

5

私自身の質問に答えると、それはChromiumのバグのようです。私は現在確認されトリアージされているバグを提出しました:http
://code.google.com/p/chromium/issues/detail?id = 125509 だから、うまくいけば、これは将来修正されるはずです:)

于 2012-05-01T07:47:54.623 に答える
2

ブラウザの戻るボタンを使用すると、ページのキャッシュバージョンが使用されますが、ページに動的データが失われ、ブラウザが以前に選択した値を検出できないため、jQueryを使用して設定できます。

$(document).ready(function(){
     $('#someselect').val('0');
});
于 2012-04-26T13:09:14.787 に答える
2

ドキュメントの外側に移動する(#はまだ内側にある)すべてのブラウザは、戻るときにサーバーのキャッシュバージョンをロードするselectedため、選択したオプション要素の属性を削除するオプションを選択したとき、および戻ったときにChromeがDOMを変更します。それは再びロードされますselected

于 2012-04-26T13:13:33.613 に答える