2011-01-25 99 views
3

下面是一个简单的描述:我使用iWebKit将网页显示为全屏iPhone应用程序。当你这样做,你获得房地产,但你失去了导航按钮。我可以在页面上放置按钮,作为前进/后退并重新获得该功能。这是可取的,因为我可以将其他内容放在与那些按钮相同的行上(如“家庭”按钮和标题)我可以使用Javascript检查浏览器历史记录中是否有下一页?

我希望能够控制这些javascript-powered转发器的显示和后退按钮,具体取决于是否实际存在下一页或上一页。例如,如果没有下一页,则下一个按钮可以变灰并且不可点击。如果我无法控制按钮的显示方式,它们可以点击但不起作用。这可能会导致用户混淆。

总之,我想知道是否有任何实际可以访问的数据可以告诉我是否有历史记录中的下一页。而且,就此而言,上一页。从我的阅读中,出于安全原因,history.next被隐藏。 history.forward()history.go(1)似乎只能用作实际转换页面的方式,而不检查是否存在这些页面。 history.length()告诉你历史记录中有多少页面,但AFAIK无法确定你在哪个队列中。

有什么办法可以检查浏览器历史记录中是否有下一页/上一页?

+0

我不确定要理解你的问题,但你为什么告诉我们history.next是隐藏的?根据以下链接是不隐藏http://www.exforsys.com/tutorials/javascript/javascript-history-object-properties-and-methods.html – 2011-01-25 20:32:48

+0

history.next返回undefined。至少这就是我的浏览器返回的内容,并且搜索“history.next返回undefined”,我发现的所有内容都表示出于安全原因无法访问。您不希望网页访问浏览器历史记录中的网址。 – wdahab 2011-01-25 20:38:02

回答

0

奇怪的是,虽然我知道会有巨大安全问题,如果有可能看浏览器历史记录,我(很容易)管理,列出当前的历史在Firefox 4B9:

var i, h = window.history, o = document.getElementById("output"); 

o.innerHTML = "<b>" + window.location.href + "<\/b><br>"; 

for (i = 0; i < h.length; i++) 
    o.innerHTML += h[i] + "<br>"; 

通过此列表,您可以检查最后一个和/或第一个项目是否与window.location.href(所有属性history.current受保护:= S)对应。如果它与其中之一相对应,那么可能位于列表的开头或末尾(但您可能位于列表中间的某处)。如果没有,你绝对不在历史的边缘。

而现在的坏消息:如要将此应用到基于WebKit的浏览器,我测试了上面的代码中铬,但window.history阵列状的物品都没有了。

0

什么是巨大的安全问题?浏览器已经将服务器与您的引用链接在一起,这是众所周知的事实,您绝对不能在地址中包含敏感信息(例如在$ _GET中传递密码)。

我知道你可以访问前一页,我知道这是事实。

相关问题