使用javascript在浏览器中修改url?

使用javascript在浏览器中修改url?,javascript,Javascript,是否可以使用javascript在不实际加载页面的情况下更改用户浏览器中的url?我不认为这是(可能会导致不必要的行为),但我的情况是这样做比较方便: 我有一个web应用程序,可以显示用户生成的报告。布局大致如下所示: ----------------------------------------------------------- Column 1 | Column 2 ------------------------------------------------------

是否可以使用javascript在不实际加载页面的情况下更改用户浏览器中的url?我不认为这是(可能会导致不必要的行为),但我的情况是这样做比较方便:

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

-----------------------------------------------------------
 Column 1    |   Column 2
-----------------------------------------------------------
  Report A   |
  Report B   |  Currently selected report contents here.
  Report C   |
现在,用户将看到如下url:

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

用户希望复制报告的url以便与朋友共享,因此我想我可以提供一个按钮来为他们生成url,但对他们来说,将其作为浏览器中的url更方便,例如:

www.mysite.com/user123/reportb
另一种方法是不使用ajax加载第2列中的报告内容,而是整页刷新。这至少可以在用户的url栏中为用户准备一个可链接的url,但不如使用ajax方便


谢谢

您不能按照您要求的方式更改它,但是:通常的解决方案是使用,因此URL最终是
www.mysite.com/user123#reportb
。设置哈希不会导致页面加载

当用户的朋友单击链接时,由于散列没有发送到服务器,因此需要在加载时检查它,并执行ajax调用(或其他调用)以加载所需的报告


这(当然)是锚使用的相同机制,您可能希望也可能不希望使用。如果不匹配,请确保您使用的哈希值与页面中的
id
s或锚定名称不匹配(如果是,当然,请确保它们匹配)。

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

如果使用javascript更改url,页面将刷新/重新加载

您可以在不刷新的情况下更改散列(在#之后的位),但是您的应用程序需要在页面加载时读取该散列,并确定要做什么

window.location.hash = "#reportb";
然后在启动时输入代码

if (window.location.hash == "#reportb") { load report b};
这在你的浏览器中被认为是一种安全功能。
你不想点击“evilsite.com”页面,突然url变为“gmail.com”,因此你无法判断它不是gmail。

研究使用JQuery历史插件。它允许在AJAX网站上进行后退/前进导航以及书签(想想url中Facebook风格的导航)而且您不必为散列编写自己的代码/处理程序


如果您希望所选报表视图可添加书签,则不要进行ajax更新。使用url中包含的选择参数进行整页刷新。

这可能是最好的方法,如果您需要一些演示或示例,您可以查看Youtube上“频道”视图的制作方式。它是使用window.location.hash构建的