繁体   English   中英

使用javascript在浏览器中修改网址?

[英]Modify url in browser using javascript?

是否可以使用javascript更改用户浏览器中的URL而不实际加载页面? 我认为不是(可能会导致不必要的行为),我会遇到这样的情况:

我有一个Web应用程序,显示用户生成的报告。 布局大致如下:

-----------------------------------------------------------
 Column 1    |   Column 2
-----------------------------------------------------------
  Report A   |
  Report B   |  Currently selected report contents here.
  Report C   |

现在用户会看到如下网址:

www.mysite.com/user123

要查看上面的页面。 当用户单击第1列中的报告名称时,我使用ajax在第2列中加载该报告的内容。 这对用户来说很方便,但浏览器中的URL保持不变。

用户想要复制报告的网址以便与朋友分享,所以我想我可以提供一个按钮来为他们生成网址,但是他们可以更方便地将其作为浏览器中的网址,就像是:

www.mysite.com/user123/reportb

替代方法是不使用ajax在第2列中加载报告的内容,而是整页刷新。 这至少会为用户在其网址栏中准备好可链接的网址,但不如使用ajax方便。

谢谢

你无法按照你要求的方式改变它,但是:通常的解决方法是使用window.location.hash ,因此URL最终为www.mysite.com/user123#reportb 设置哈希不会导致页面加载。

当用户的朋友点击链接时,由于散列没有发送到服务器,您需要在加载时检查它并执行ajax调用(或者你有什么)来加载所需的报告。

这(当然)是锚点使用的相同机制,您可能想要或不想使用它。 如果没有,请确保您使用的哈希值与页面中的id或锚名称不匹配(如果是,请确保它们确实如此)。

查看使用JQuery历史插件。 它允许在AJAX站点上进行后退/前进导航以及书签(在URL中考虑Facebook样式导航),并且您不必为哈希编写自己的代码/处理程序。

http://plugins.jquery.com/project/history

有趣! 但我觉得更改网址会重新加载页面。 为什么不显示带有URL的文本框。 您还可以考虑提供一个按钮,将URL直接放入剪贴板(用户无需转到URL栏,选择URL,然后按ctrl + c。

如果您使用javascript更改网址,该页面将刷新/重新加载。

您可以在不刷新的情况下更改哈希值(#之后的位),但是您的应用程序需要在页面加载时读取它并找出要执行的操作。

window.location.hash = "#reportb";

然后在启动时的代码中

if (window.location.hash == "#reportb") { load report b};

这有点被认为是浏览器中的安全功能。 你不想打一个页面“evilsite.com”,突然网址变成了“gmail.com”,所以你无法告诉它不是gmail。

如果您希望所选报表视图可收藏,则不要执行ajax更新。 使用网址中包含的选择参数进行整页刷新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM