2008-10-28 5 views
2

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

мне удалось получить доступ к истории объекта фрейма с

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

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

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

+0

Вы внедряете это в другое приложение? – 2008-10-28 19:41:47

ответ

4

Поскольку в каждой вкладке есть только один объект истории, это кажется невозможным. Правильный путь вокруг него - проверить 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

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

Смежные вопросы