onhashchange 事件未检测到“/Home/Index”和“/”之间的变化 - ASP.NET MVC3
onhashchange event doesn't detect changes between "/Home/Index" and "/" - ASP.NET MVC3
我在 ASP.NET MVC3 网络应用程序中工作,我的问题如下:我想使用以下方法检测 URL 更改:
window.onhashchange = function (event) {
//some stuff...
};
并且它完美地工作...但是,它完美地工作,而在 url 中总是出现:
'localhost:[port]/Home/Index'
或者在某些情况下,url 更改为:
'localhost:[port]/Home/Index#'
当用户更改 url(例如,他删除“/Home/Index”)时,页面将重新加载(url 是 'localhost:[port]/') 但是当用户按下后退按钮并再次返回到 '/Home/Index' onhashchange 事件
没有检测到这种变化。为什么? '/Home/Index'和'/'是一样的吗?
散列是在 url 中的#
符号之后出现的。
如果当前url是:
http://localhost:12345/Home/Index#chapter-1
并且有人点击 link 像这样:<a href="#chapter-2">Chapter 2</a>
然后 url 的散列部分将改变导致 window.onhashchange
被触发。导航到另一个页面不会触发 onhashchange 事件,因为哈希值在新页面上没有更改。
window.onhashchange = function(e) {
var log = document.getElementById("log");
log.innerText = "Event: Hash changed " + location.hash;
window.setTimeout(function() {
log.innerText = "Event: ";
}, 3000);
}
<div id="log">Event:</div>
<ul>
<li><a href="#chapter1">Change hash to chapter 1</a></li>
<li><a href="#chapter2">Change hash to chapter 2</a></li>
<li><a href="#">Change hash to nothing</a></li>
<li><a href="#" onclick="location.reload()">reload page</a></li>
</ul>
我在 ASP.NET MVC3 网络应用程序中工作,我的问题如下:我想使用以下方法检测 URL 更改:
window.onhashchange = function (event) {
//some stuff...
};
并且它完美地工作...但是,它完美地工作,而在 url 中总是出现:
'localhost:[port]/Home/Index'
或者在某些情况下,url 更改为:
'localhost:[port]/Home/Index#'
当用户更改 url(例如,他删除“/Home/Index”)时,页面将重新加载(url 是 'localhost:[port]/') 但是当用户按下后退按钮并再次返回到 '/Home/Index' onhashchange 事件 没有检测到这种变化。为什么? '/Home/Index'和'/'是一样的吗?
散列是在 url 中的#
符号之后出现的。
如果当前url是:
http://localhost:12345/Home/Index#chapter-1
并且有人点击 link 像这样:<a href="#chapter-2">Chapter 2</a>
然后 url 的散列部分将改变导致 window.onhashchange
被触发。导航到另一个页面不会触发 onhashchange 事件,因为哈希值在新页面上没有更改。
window.onhashchange = function(e) {
var log = document.getElementById("log");
log.innerText = "Event: Hash changed " + location.hash;
window.setTimeout(function() {
log.innerText = "Event: ";
}, 3000);
}
<div id="log">Event:</div>
<ul>
<li><a href="#chapter1">Change hash to chapter 1</a></li>
<li><a href="#chapter2">Change hash to chapter 2</a></li>
<li><a href="#">Change hash to nothing</a></li>
<li><a href="#" onclick="location.reload()">reload page</a></li>
</ul>