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

use*_*114 4 javascript

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

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

-----------------------------------------------------------
 Column 1    |   Column 2
-----------------------------------------------------------
  Report A   |
  Report B   |  Currently selected report contents here.
  Report C   |
Run Code Online (Sandbox Code Playgroud)

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

www.mysite.com/user123
Run Code Online (Sandbox Code Playgroud)

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

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

www.mysite.com/user123/reportb
Run Code Online (Sandbox Code Playgroud)

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

谢谢

T.J*_*der 6

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

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

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