我正在编写一个将在触摸屏上以kiosk模式运行的Web应用程序。我目前只针对它在Firefox 3上运行。我需要访问外部网站的一些用例。我希望使用嵌入式浏览器,我正在<iframe>
的帮助下解决这个问题。我需要嵌入式主页的后退/前进按钮。
我已设法使用
访问iframe的历史记录对象var w = document.getElementById('embeddedBrowser').contentWindow;
w.history.back();
嵌入窗口的history
与父窗口的<iframe>
相同。因此,对于新加载的{{1}},此调用将返回到系统的上一页。
有没有办法避免这种情况或更正确的解决方法?
答案 0 :(得分: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 :(得分:1)