Встроенный браузер с iframe - PullRequest
3 голосов
/ 28 октября 2008

Я пишу веб-приложение, которое будет работать в режиме киоска на сенсорном экране. В настоящее время я нацеливаю его только на работу с Firefox 3. Мне нужно несколько вариантов использования для посещения внешних сайтов. Я хочу сделать это с помощью встроенного браузера, который я использую с помощью <iframe>. Мне нужны кнопки назад / вперед для встроенной домашней страницы.

Мне удалось получить доступ к объекту истории iframe с помощью

var w = document.getElementById('embeddedBrowser').contentWindow;
w.history.back();

history встроенного окна такое же, как и у родительского окна. Поэтому для вновь загруженного <iframe> этот вызов вернется на предыдущую страницу системы.

Есть ли способ избежать этого или более правильный способ решения этой проблемы?

Ответы [ 2 ]

4 голосов
/ 29 октября 2008

Поскольку в каждой вкладке используется только один объект истории, это кажется невозможным. Правильным способом было бы проверить window.history.current или window.history.previous перед тем, как перезвонить. К сожалению, window.history.current является привилегированным и поэтому недоступно для неподписанных страниц.

Вот грубый набросок грязного обходного пути:

<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) никогда не происходит в родительском окне и т. Д., Но это похоже на проблему ограничения движения назад.

1 голос
/ 28 октября 2008

Возможно, вы захотите взглянуть на Adobe AIR . Он позволяет вам писать ваше приложение, используя все те же инструменты / языки (ajax, html и т. Д.), Но поскольку оно запускается как настольное приложение, а не в веб-браузере, вы имеете больший контроль над такими вещами, как встраивание рамок браузера и точно зная, что они делают, на какой URL он собирается, управляя своей историей и т. д. Посмотрите здесь , чтобы найти несколько советов по началу работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...