location.href未定义

时间:2014-11-21 12:24:45

标签: javascript jquery firefox href

我在使用Firefox(v 33.1)中任何可能形式的当前浏览器位置时遇到了麻烦。 如果被jQuery的“就绪”功能读取,则location.href,window.location.href和document.location.href是“未定义的”。同样适用于.hash等。但是,在控制台中,它们会完全返回它们应该的内容。

$(function(){$("a").unbind("click").click($S.r);$S.r();});
$S={
    r: function()
    {
        try{$I=((typeof this.href)?this.href:location.href).replace(/^.*?#/,'');}catch($E){console.error($E);setTimeout(function(){$S.r();},250);return false;}
        $S.c($I);
    },
    c: function($I)
    {
        $("content").css({"opacity":"0"});
        setTimeout(function()
        {
            $("content spacer").html($S.h($I));
            $("content").css({"opacity":"1"});
        },1000);
    },
    h: function($I)
    {
        switch ($I)
        {
            case "impressum": return "Impressum";
            case "email": return "E-Mail";
            case "mitglieder": return "Familien-Mitglieder";
            default: return "Startseite";
        }
    }
};

网址:http://saris.it

我想要实现的目标:/ #test将触发脚本加载Test的内容 这在单击链接时有效。在页面加载上,它没有。 控制台中填充相应的变量。他们不是jQuery。 使用setTimeout根本没有帮助。

我应该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:2)

错误:

((typeof this.href)?this.href:location.href).replace(/^.*?#/,'')

尝试:

((typeof this.href != 'undefined')?this.href:location.href).replace(/^.*?#/,'')

未定义,不是location.href,而是this.href
因为你的typeof this.href是字符串'undefined',所以在比较时是正确的。