我在MVC3视图中有以下代码:
$(document).ready(function () {
if (window.location.hash) {
var manager= new Manager();
manager.doSomeStuff(window.location.hash);
}
});
有趣的是,当URL中没有哈希标记,或者只有哈希标记示例时:
http://localhost:1223/Index/AboutUs
http://localhost:1223/Index/AboutUs#
当window.location.hash
为空且未执行该功能时。
但是当哈希标记中有一些值时:
http://localhost:1223/Index/AboutUs#categoryId=5&manufacturerId=8
window.location.hash
中的值为#categoryId=5&manufacturerId=8
您能否向我解释为什么#
标记包含在值中?为什么#
标记后没有值,window.location.hash
为空。
答案 0 :(得分:9)
没有什么可以解释的。这是它的工作方式。
在此处阅读更多内容:http://www.w3schools.com/jsref/prop_loc_hash.asp
定义和用法
The hash property returns the anchor portion of a URL, including the hash sign (#).
答案 1 :(得分:8)
如果您想要,只需更改哈希名称即可更改它:
//Your old hash name caught in a variable
var nameHash = location.hash;
//Your new hash name without "#"
var newHashName = nameHash.replace("#","");
答案 2 :(得分:7)
var hash = window.location.hash.substring(1);
这省略了字符串的第一个字符,即哈希标记。
答案 3 :(得分:1)
You can repalce #
但这种方式会产生冲突,无法使用javascript。
Here is window.location reference link.
以下是不同的用法示例:
$(document).ready(function () {
var urlHash = window.location.hash;
var sampleURL = '#categoryId=5&manufacturerId=8';
if ( urlHash.length > 1 ) {
//do stuff
}else{
//if value is empty, do stuff
}
if ( urlHash === sampleURL ) {
commonResponse();
}
$('a').click(function() {
var target = $(this).attr('href');
if (target === sampleURL ) {
commonResponse();
}
});
function commonResponse() {
//alert('ok');
}
});