有没有办法做这样的事情:$(window).on("hashchange", doSomething);
但检测到document.location.search
更改?
答案 0 :(得分:2)
这已在On - window.location.hash - change?中提出。简而言之,在JavaScript中没有完全干净的方法;你需要经常检查位置。一些框架和库将为您提供一个很好的抽象层,但在内部,他们只是继续轮询位置。
不幸的是,Lucas的回答不正确 - 您可以使用JavaScript History API修改当前的网址而无需重新加载页面。
答案 1 :(得分:1)
corr
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 1.0000 0.6008 0.4984 0.1920 0.1959 0.3466
# [2,] 0.6008 1.0000 0.4749 0.2196 0.1912 0.2979
# [3,] 0.4984 0.4749 1.0000 0.2079 0.2010 0.2445
# [4,] 0.1920 0.2196 0.2079 1.0000 0.4334 0.3197
# [5,] 0.1959 0.1912 0.2010 0.4334 1.0000 0.4207
# [6,] 0.3466 0.2979 0.2445 0.3197 0.4207 1.0000
和hash
标记具有不同的实现。当搜索字符串发生更改时,整个页面被重新加载,但不是search
的情况。因此,如果您想对href更改进行一些处理,那么您可以使用hash
事件处理程序。
您可以使用beforeunload事件触发代码在导航之前运行...如果您需要更具体的内容(例如,只在您的代码中启动导航),那么我建议您分解代码将window.location更改为单独的函数,并为自定义逻辑添加一个钩子。
为了更好地理解你可能想看看Ben Nadel的post关于这样做,它可能正是你正在寻找的。 p>
答案 2 :(得分:0)
与哈希发生的情况不同,如果您的搜索值因用户的操作而发生变化,您的网页就会重新加载。因此,您的选择是使用onbeforeunload事件:
<body onbeforeunload="return myFunction()">