質問

タッチ スクリーン上でキオスク モードで実行される 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)ブラウジングが行われないことを前提としていますが、後方への移動を制限する問題についてはうまくいくようです。

他のヒント

見てみるのもいいかもしれません Adobe AIR. 。すべて同じツール/言語 (ajax、html など) を使用してアプリケーションを作成できますが、Web ブラウザーではなくデスクトップ アプリとして実行されるため、ブラウザー フレームの埋め込みや、彼らが何をしているのか、どのような URL に送信されるのか、その履歴を制御するのかなどを正確に知ることができます。 ここを見て 開始するためのいくつかのヒントについては、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top