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