質問
タッチ スクリーン上でキオスク モードで実行される Web アプリケーションを作成しています。現在、Firefox 3 での実行のみを対象としています。いくつかのユースケースでは、外部サイトにアクセスする必要があります。埋め込みブラウザを使用してこれを実行したいと考えています。 <iframe>
. 。埋め込みホームページに戻る/進むボタンが必要です。
iframeの履歴オブジェクトにアクセスできました
var w = document.getElementById('embeddedBrowser').contentWindow;
w.history.back();
の history
埋め込みウィンドウのウィンドウは親ウィンドウのウィンドウと同じです。したがって、新しくロードされた <iframe>
, 、この呼び出しはシステムの前のページに戻ります。
これを回避する方法、またはこれを解決するより正確な方法はありますか?
解決
各タブ内で共有される履歴オブジェクトは1つしかないため、これは不可能に思えます。適切な方法は、コールバックする前にwindow.history.current
またはwindow.history.previous
をテストすることです。残念ながら、<=>は特権を持っているため、署名のないページでは使用できません。
これは厄介な回避策の大まかなスケッチです:
<iframe src="somepage.html" name="myframe"></iframe>
<p><a href="#" id="backBtn">Back</a></p>
<script type="text/javascript">
document.getElementById('backBtn').onclick = function () {
if (window.frames['myframe'].location.hash !== '#stopper') {
window.history.back();
}
// ... else hide the button?
return false; // pop event bubble
};
window.frames['myframe'].onload = function () {
this.location.hash = 'stopper';
};
</script>
もちろん、これは親ウィンドウで(#hash)ブラウジングが行われないことを前提としていますが、後方への移動を制限する問題についてはうまくいくようです。
所属していません StackOverflow