我一直在使用哈希在页面之间传递数据(比如设置scrollTop()
等),并且还使用hashChange
事件来触发给定页面上的更改。
然而,哈希具有我不一定感兴趣的默认行为,例如使页面跳转到给定(有时无关紧要)的位置。
我觉得获取/设置查询字符串更符合逻辑,但是:
是吗?
设置查询字符串时是否有可以侦听的事件?
我是否应该了解与查询字符串相关的行为?
答案 0 :(得分:2)
scrollIntoView()
的任何元素都在id
,但<a name="xxx">
有专门的行为。所以,答案是肯定的,页面参数应该通过querystring传递。window.beforeunload
,是的,当javascript:void(location.search='some')
设置 此外,使用查询字符串:http://xkr.us/js/querystring
答案 1 :(得分:1)
这取决于你在做什么。
查询字符串更改将始终触发页面重新加载。您可以在没有重新加载页面的情况下更改URL的唯一部分是#-part。
在javascript应用程序中,页面加载通常不合适。但是,当使用传统的html页面请求/响应模型时,可能会使用它。
但是没有AFAIK事件,因为它会改变页面。
答案 2 :(得分:1)
正如另一个答案所说,更改查询字符串将导致页面重新加载。就浏览器而言,您将进入一个全新的页面。
执行此操作时会发生一些事件。 'beforeunload`事件将触发,但它不会非常有用,因为当用户点击链接或关闭窗口时它也会触发。
如果更改查询字符串,将有效触发的事件将是它加载的新页面上的加载事件。