window.location.hash返回值前面的哈希标记

时间:2012-10-30 16:07:13

标签: javascript jquery asp.net-mvc-3 url hashtag

我在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为空。

4 个答案:

答案 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');
    }
});