【问题标题】:window.location force to update?window.location 强制更新?
【发布时间】:2011-06-18 12:46:28
【问题描述】:

我想知道有没有办法强制window.location 更新?我在使用 ajax 生成结果的页面上。但是,URL 在栏中保持不变,因此我无法获取真实的 URL。我想知道..我将如何获取 URL?我可以在不刷新页面的情况下强制window.location 更新吗?

我所说的这类页面的一个例子是 google Instant!

【问题讨论】:

  • 我认为你必须更好地描述这个场景。 我在一个使用 ajax 的页面上 是什么意思?你创建这个页面吗?您是否使用浏览器访问此页面?您如何访问window.location?您是否在第三方页面中注入 JavaScript?等
  • 根据您的下一个问题,我假设您正在创建一个可以在 Google Instant 页面上运行的 Chrome 扩展程序......我说的对吗?如果是这样,那么向hashchange 事件添加侦听器可能是获取 URL 的唯一方法(但如果接受的答案有效,我会对 how :) 感兴趣)
  • 是的,我正在尝试创建一个适用于 Google Chrome 的 Chrome 扩展程序。但是,我似乎无法获得 ajax 响应的 URL。我已经有一个侦听器,它检查 MD5 的结果以查看 URL 是否已更改,但我似乎无法获取 URL。
  • @Skizit:所以我假设您创建了一个内容脚本(或在 Chrome 中调用的任何内容),它会被注入到页面中?您是否尝试过注册 hashchange 事件处理程序?正如我所说,在很短的时间后(当用户不再输入时),URL 会发生变化。您会收到通知,然后可以获取 URL(如果我正确理解了整个场景)。
  • @Felix Kling 是的,我正在使用内容脚本。如果我这样做window.location 只返回http://www.google.com 而不是“真实” URL。问题是window.location 中的 URL 没有改变。但是,该 url 确实会在 chrome 控制台显示的 XHR 中更新。所以我想知道有什么方法可以获取该 URL 并将其放入我的代码中。然后使用下面列出的 HTML5

标签: javascript ajax window


【解决方案1】:

您是否希望使用 AJAX 更新内容和 URL?只需使用 HTML5 浏览器提供的 History API

【讨论】:

  • 对于尚不支持 HTML5 的浏览器,您可以改为更新 URL 哈希。
  • 这取决于 OP 真正想要什么,但使用历史 API 不会改变 window.location
  • 简而言之:window.history.pushState({},'the new title','/new-url');
  • 啊,酷,酷。关于如何从 Google 即时页面获取“真实”网址的任何建议?对此有重大问题!
  • Google Instant 确实将查询放在哈希之后; window.locationwindow.location.hrefwindow.location.hash 确实包含您要查找的信息。
【解决方案2】:

不,你不能。如果您不控制页面并且他们没有以某种方式更新 URL,那么您无能为力。

但如果您有控制权,那么您有责任使用片段标识符或 HTML5 的新历史 API 来更新地址。 但是即使您使用历史 API,window.location 也不会改变。

更新:

不能 100% 确定您所说的是哪个 Google Instant 页面,但如果它是“正常”的 Google 页面,那么您会看到 URL 在您输入查询后 1 或 2 秒后更新。

因此您可以为hashchange event 添加一个事件侦听器,然后从window.location 获取URL。

【讨论】:

    【解决方案3】:

    【讨论】:

    • 是的,但我如何将 Google 即时结果页面上的 URL“推送”到地址栏中?
    【解决方案4】:

    changing location.hash with jquery ui tabs

    将此添加到您当前的触发器中。 (我知道这是 jQuery 但逻辑是一样的)

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 2019-10-26
      • 2018-12-26
      • 2018-05-08
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多