是否有像查询字符串的hashchange这样的事件?

时间:2010-11-27 09:42:05

标签: javascript query-string

我一直在使用哈希在页面之间传递数据(比如设置scrollTop()等),并且还使用hashChange事件来触发给定页面上的更改。

然而,哈希具有我不一定感兴趣的默认行为,例如使页面跳转到给定(有时无关紧要)的位置。

我觉得获取/设置查询字符串更符合逻辑,但是:

  1. 是吗?

  2. 设置查询字符串时是否有可以侦听的事件?

  3. 我是否应该了解与查询字符串相关的行为?

3 个答案:

答案 0 :(得分:2)

  1. 重新发明锚行为是不合逻辑的。最好不要将哈希链接暴露给无关紧要的片段(尽管现代浏览器对scrollIntoView()的任何元素都在id,但<a name="xxx">有专门的行为。所以,答案是肯定的,页面参数应该通过querystring传递。
  2. 事件为window.beforeunload,是的,当javascript:void(location.search='some') 设置
  3. 时页面重新加载
  4. 没有惊喜,有look
  5. 此外,使用查询字符串:http://xkr.us/js/querystring

答案 1 :(得分:1)

这取决于你在做什么。

查询字符串更改将始终触发页面重新加载。您可以在没有重新加载页面的情况下更改URL的唯一部分是#-part。

在javascript应用程序中,页面加载通常不合适。但是,当使用传统的html页面请求/响应模型时,可能会使用它。

但是没有AFAIK事件,因为它会改变页面。

答案 2 :(得分:1)

正如另一个答案所说,更改查询字符串将导致页面重新加载。就浏览器而言,您将进入一个全新的页面。

执行此操作时会发生一些事件。 'beforeunload`事件将触发,但它不会非常有用,因为当用户点击链接或关闭窗口时它也会触发。

如果更改查询字符串,将有效触发的事件将是它加载的新页面上的加载事件。