5

我在 MVC3 视图中有以下代码:

 $(document).ready(function () {
    if (window.location.hash) {
        var manager= new Manager();

        manager.doSomeStuff(window.location.hash);
    }
});

有趣的是,当 URL 中没有 hash 标签,或者只有 hash 标签时:

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

4

4 回答 4

9

没什么好解释的。这是它的工作方式。

在这里阅读更多:http: //www.w3schools.com/jsref/prop_loc_hash.asp

定义和使用

The hash property returns the anchor portion of a URL, including the hash sign (#).
于 2012-10-30T16:11:48.933 回答
8

如果需要,您可以通过简单地更改哈希名称来更改它:

//Your old hash name caught in a variable
var nameHash = location.hash;

//Your new hash name without "#"
var newHashName = nameHash.replace("#","");
于 2012-10-30T16:25:23.630 回答
8
var hash = window.location.hash.substring(1);

这省略了字符串的第一个字符,即哈希标记。

于 2014-12-10T09:45:25.557 回答
1

您可以替换#,但这种方式会产生冲突,并且不适用于 javascript。

这是 window.location 参考链接。

以下是不同的用法示例:

$(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');
    }
});
于 2012-10-30T16:40:03.710 回答