Pregunta

Estoy escribiendo una aplicación web que se ejecutará en modo quiosco en una pantalla táctil. Actualmente solo estoy apuntando a que se ejecute en Firefox 3. Algunos de los casos de uso que necesito para visitar sitios externos. Deseo hacerlo con un navegador integrado, que estoy abordando con la ayuda de un <iframe>. Necesito botones de retroceso / avance para la página de inicio incrustada.

He logrado acceder al objeto de historial del iframe con

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

El history de la ventana incrustada es el mismo que el de la ventana principal. Por lo tanto, para un <=> recién cargado, esta llamada volverá a la página anterior del sistema.

¿Hay alguna forma de evitar esto o una forma más correcta de resolver esto?

¿Fue útil?

Solución

Debido a que solo hay un objeto de historial compartido dentro de cada pestaña, esto parece imposible. La forma correcta de evitarlo sería probar window.history.current o window.history.previous antes de volver a llamar. Lamentablemente, <=> tiene privilegios y, por lo tanto, no está disponible para páginas sin firmar.

Aquí hay un bosquejo aproximado de una solución desordenada:

<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>

Por supuesto, esto supone que no se realiza ninguna exploración (#hash) en la ventana principal, y así sucesivamente, pero parece funcionar para el problema de limitar el movimiento hacia atrás.

Otros consejos

Es posible que desee echar un vistazo a Adobe AIR . Le permite escribir su aplicación utilizando las mismas herramientas / idiomas (ajax, html, etc., etc.), pero como se ejecuta como una aplicación de escritorio y no en un navegador web, tiene más control sobre cosas, como incrustar marcos del navegador y sabiendo exactamente lo que están haciendo, a qué URL se dirige, controlando su historial, etc. Mire aquí para obtener algunos consejos sobre cómo comenzar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top