【问题标题】:Using Javascript to convert ? in URL to anchor使用 Javascript 进行转换?在 URL 中锚定
【发布时间】:2013-03-10 06:05:11
【问题描述】:

如何转换:

http://example.com/?thisurl

到这里:

http://example.com/#/thisurl

我有一堆旧 URL 需要重定向到我页面上的特定锚点,但我无法使用 htaccess 执行此操作,因为这些锚点无法通过。

有什么想法吗?

【问题讨论】:

    标签: javascript url redirect anchor


    【解决方案1】:

    这样的事情应该可以工作:

    window.location.href = window.location.href.split('?')[0] + '#/' +
                           window.location.search.replace(/^?/, '');
    

    【讨论】:

      【解决方案2】:

      您可以像这样使用window.location 对象的.hash.search 部分:

      window.location.hash = "/" + window.location.search.substr(1);
      

      这将设置哈希而不重新加载页面。


      如果您想重新加载页面,使其具有新的 URL(在 URL 栏中没有 ?thisUrl,那么您可以这样做:

      var wl = window.location;
      if (wl.search.length > 1) {
          wl.href = wl.href.replace(/\?.*$/, "") + "#" + wl.search.substr(1);
      }
      

      【讨论】:

      • 第一个脚本有效!有没有办法编写 URL,所以我得到 domain.com/#myurl 而不是 domain.com/?myurl#myurl ?
      • @user1738343 - 如果没有问题,请使用第一个版本。我们无法帮助您解决其他 javascript 的重定向问题,因为您尚未披露其他代码。如果存在散列,则可以将其他代码编码为不执行重定向。
      • 抱歉,请看我上面编辑过的帖子——第一个脚本确实有效。
      • 如果您希望它在所有浏览器中工作,那么更改 URL(除了设置window.location.hash)将导致页面重新加载。如果您只希望它在现代浏览器中工作,您可以使用window.history.replaceState() 更改 URL 栏中显示的内容,而无需重新加载页面。请参阅replaceState() 上的MDN doc here
      猜你喜欢
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2013-02-05
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多