2013-03-04 41 views
3

我试图寻找这30分钟,所以我道歉,如果它被问了。的Javascript:document.url无锚(哈希)部分

我有一些Ajax返回一组结果和被点击时一个简单地重新加载网址与附加数据的URL,PHP获得下一个页面上。问题是,如果用户点击一些内置的锚定(我不能删除),该网址会something.com#location1所以追加?action=next会把它变成something.com#location1?action=next其在浏览器解释为一个长的锚,而不是一个新的URL实际上直接至。

如果用户点击从来没有锚定器部分此重定向工程顺利使用window.location=document.url+"?action=next"

有没有办法删除锚点(包括散列标签)从现有的网页的网址是什么?

解决

使用Michael W's answer我能解决这个问题。我简单地更换这行:

window.location=document.url+"?action=next"

有了这个:

window.location=document.location.href.match(/(^[^#]*)/)[0]+"?action=next"

感谢您的帮助!

+0

[这些结果都没有帮你?](https://开头www.google.com/search?q=javascript+remove+hash+from+url) – 2013-03-04 02:20:55

+0

我与迈克尔W的解决方案(稍作修改)一起使用,标记为这样并编辑原始问题以包含未来读者的解决方案。 – Bing 2013-03-04 05:19:41

回答

4

你可以匹配的位置的主题标签预部分:

document.location.href.match(/(^[^#]*)/) 
+4

对于那些阅读:这返回一个数组。指定第一个元素为我工作: 'window.location = document.location.href.match(/(^ [^#] *)/)[0]' 我完全中止使用'document.url'。 – Bing 2013-03-04 05:14:45

1

location对象可以通过独立的组件来访问,你可以使用那些你喜欢重建URL与许多或几件。

的官方文档离线此时却this site似乎有它。

如果这些是你正在生成的内部链接,你只需要生成一个相对的url即可,也许即使只是location.pathname就足够了。你标记你的问题,如JavaScript,但因为你在PHP中编码

注意,我怀疑你需要的是产生在PHP端这些链接。

8

这似乎稍微简单:

document.URL.replace(/#.*$/, "")