【问题标题】:Can I check if there is a next page in browser history w/Javascript?我可以使用 Javascript 检查浏览器历史记录中是否有下一页吗?
【发布时间】:2011-01-25 20:23:44
【问题描述】:

这里有一个简短的描述:我正在使用 iWebKit 将网页显示为全屏 iPhone 应用程序。当你这样做时,你获得了房地产,但你失去了导航按钮。我可以在页面上放置用作前进/后退的按钮并重新获得该功能。这是可取的,因为我可以将其他内容与这些按钮放在同一行(例如“主页”按钮和标题)

我希望能够控制这些由 javascript 驱动的前进和后退按钮的显示,具体取决于实际上是要转到下一页还是上一页。例如,如果没有下一页,则下一步按钮可以灰显,不可点击。如果我无法控制按钮的显示方式,它们是可点击的,但没有效果。这可能会导致用户混淆。

最后,我想知道是否有任何可以实际访问的数据来告诉我历史记录中是否存在下一页。而且,就此而言,前一页。根据我的阅读,history.next 出于安全原因被隐藏。 history.forward()history.go(1) 似乎仅作为实际转换页面的方法有用,而不是检查这些页面是否存在。 history.length() 告诉您历史记录中有多少页,但 AFAIK 您无法确定您在该队列中的位置。

有没有办法检查浏览器历史中是否有下一页/上一页?

【问题讨论】:

  • 我不确定你的问题,但你为什么告诉我们history.next 是隐藏的?根据以下链接是不是隐藏exforsys.com/tutorials/javascript/…
  • history.next 返回未定义。至少这是我的浏览器返回的内容,并且搜索“history.next 返回未定义”我发现的所有内容都表明出于安全原因无法访问。您不希望网页访问浏览器历史记录中的网址。
  • 澄清一下,如果不清楚,我并不想真正看到下一页是什么。我只想知道有没有。这对我来说似乎无害,但也许我错了。

标签: javascript iphone web-applications browser-history


【解决方案1】:

奇怪的是,虽然我知道如果可以查看浏览器历史记录会有一个巨大的安全问题,但我(很容易)设法列出了 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 的浏览器,我在 Chromium 中测试了上面的代码,但是 window.history 的类似数组的项目不存在.

【讨论】:

  • 嘿,一个有趣的黑客,绝对是一个很大的安全漏洞。我想这是使用 Chrome 的一个很好的理由。 :) 但是,当然,就我而言,这是一个劣势,因为我需要 WebKit 支持。
【解决方案2】:

什么巨大的安全问题?!浏览器已经用您的推荐人 ping 服务器,这是一个众所周知的事实,您永远不能在地址中包含敏感信息(例如在 $_GET 中传递密码),仅针对这个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 2011-04-05
    • 2017-11-04
    • 2017-10-20
    • 1970-01-01
    • 2021-12-02
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多