【问题标题】:distinguishing between pages using JavaScript使用 JavaScript 区分页面
【发布时间】:2011-06-19 06:14:31
【问题描述】:

我很好奇如何让 JavaScript 区分两个几乎相同的页面(据我所知)具有相同的 div。像这样的页面示例是Google Home PageGoogle Search Results。无论如何我可以正确识别哪个是哪个?

【问题讨论】:

    标签: javascript html-parsing css-parsing


    【解决方案1】:

    在该特定示例中,window.title 将区分它们。 Chrome 不支持 window.title,但 document.title 支持。它适用于 Linux 和 Windows 上的 Chrome、Firefox 和 Opera; Windows 上的 Safari; Windows 上的 IE6、IE7 和 IE8;可能还有其他人。

    更一般地说,window.location 会为您提供页面的 URL,这有助于告诉您当前所在的页面; more on MDC。我见过的所有主流浏览器都支持它,包括上面的列表。

    【讨论】:

    • window.location 并非在每个浏览器中都可靠,而且 Google 有一种更改 URL 的方法,因此很难区分它们。但是,window.title 对于 Google 示例来说似乎是一个很好的解决方案。
    • 嗯.. 如果用户搜索的语言不是英语,window.title 将无法可靠地工作。
    • @Skizit: "window.location 并非在所有浏览器中都可靠" 嗯?我从未听说过window.location 不可靠。它适用于我见过的所有浏览器。例如:jsbin.com/azogi4 我刚刚在 Windows 和 Linux 的 Chrome、Firefox 和 Opera 中检查过; Windows下的Safari;以及Windows下的IE6、IE7、IE8。我很想了解更多关于window.location 的信息,你有参考资料吗?
    • 另外 Chrome 不支持window.title
    • @T.J.Crowder 如果您使用基于 webkit 的浏览器并使用 Google 即时 window.location 将无法正常工作。使用 URL 并不是 Google 页面的真正选项。例如,如果您从 Google 主页 -> iGoogle -> Google 主页转到 URL 会完全更改语法,这样解决方案就会中断。
    【解决方案2】:

    从 HTML5 开始,您可以编辑浏览器历史记录。例如,您可以使用window.history.pushState() 更改当前 URL:

    // pushState(state object, title, URL)
    window.history.pushState({foo: "bar"}, "page 2", "bar.html");
    

    这使用户保持在完全相同的页面上,但会更改 URL。这也发生在当前版本的 Google 主页上,所以页面还是一样的。

    您可以使用window.location 检索网址。

    【讨论】:

    • 我不想这样做。我想确定当前页面是什么。
    • 你总是在同一个页面上。在他们的代码中搜索 pushStateonpopstage。这就是谷歌的做法。嗯,也许这应该是评论,而不是答案
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2014-10-02
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多