2008-10-28 102 views
2

我正在编写一个Web应用程序,它将在触摸屏上以Kiosk模式运行。我目前只针对它在Firefox 3上运行。我有一些用例需要访问外部网站。我希望通过嵌入式浏览器来实现这一点,我正在的帮助下解决这个问题。我需要嵌入式主页的后退/前进按钮。使用iframe的嵌入式浏览器

我已经成功与

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

嵌入式窗口的history访问iframe的历史对象相同的父窗口。因此,对于新加载的,此呼叫将返回到系统的上一页。

有什么办法可以避免这种或更正确的解决方法吗?

+0

你是否将其嵌入到另一个应用程序中? – 2008-10-28 19:41:47

回答

4

因为在每个选项卡中只共享一个历史对象,所以这看起来不可能。正确的方法是在回拨前测试window.history.currentwindow.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等)编写应用程序,但由于它作为桌面应用程序运行,而不是在Web浏览器中运行,因此您可以更好地控制事物,例如嵌入浏览器框架和确切地知道他们在做什么,将要访问的URL,控制它的历史记录等等。Look here有关入门的几点提示。