jQuery モバイルでは、iframe を使用しています。戻るボタン (アプリまたはブラウザの戻るボタン) を押すと、iframe コンテンツが消えます。次に戻るボタンをもう一度押すと、アプリは前のページに遷移します。
iFrame が履歴に追加されています。これは絶対にあってはならないことだと思いました。
可能な限り単純な形式でパズルを説明するjsFiddleが作成されました。
その中に、2 つの jQuery Mobile ページを作成する HTML のフラグメントがあります。最初のページには、2 番目のページに移動するためのリンクがあります。2 番目のページには、2 つの戻るボタン (ヘッダーに 1 つ、ページのボタンとして 1 つ) と、<iframe>
. 問題を再現するには:
- 1ページから2ページへのリンクをたどってください
- 2 ページ目で、ボタンをクリックして
<iframe>
- 戻るボタンのいずれかをクリックします
ページ 1 に戻らないことに注意してください。
HTMLは次のとおりです。
<div data-role="page">
<p>This is page 1</p> <a href="#page2">Go to page 2</a>
</div>
<div data-role="page" id="page2">
<div data-role="header" data-add-back-btn="true">
<h1>Page 2</h1>
</div>
<p>This is page 2</p>
<p>What follows is the iFrame</p>
<iframe id="i1" width="500" src="http://www.ibm.com"></iframe>
<p>This button issues a programmatic back</p>
<button id="backButton">Go Back</button>
<p>This button loads new content into the iframe</p>
<button id="reloadButton">Reload iFrame</button>
</div>
ここにJavaScriptがあります
$(function () {
$("#backButton").click(function () {
jQuery.mobile.back();
});
$("#reloadButton").click(function() {
$("#i1").attr("src", "http://www.microsoft.com?x=" + Math.random());
});
});
(これは jsFiddle にあるコードです)。