&引用;拒绝对本机属性进行阴影处理的权限”;在JavaScript中使用location.replace重定向

&引用;拒绝对本机属性进行阴影处理的权限”;在JavaScript中使用location.replace重定向,javascript,Javascript,我正面临location.replace的问题,我被这个问题所困扰。我需要模拟HTTP重定向(我不希望我的用户因为我正在实现的这一特定功能而陷入无休止的后退按钮失败),因此我使用location.replace而不是location.href来重定向。然而,我经常在Firefox12.0的控制台上看到下面的错误消息 对本机属性的卷影权限被拒绝 下面是我的代码(在这里添加代码时,我屏蔽了请求URL中的服务器详细信息) 请注意,如果我使用location.href,它就像一个符咒。原因可能是什么。如

我正面临
location.replace
的问题,我被这个问题所困扰。我需要模拟HTTP重定向(我不希望我的用户因为我正在实现的这一特定功能而陷入无休止的后退按钮失败),因此我使用
location.replace
而不是
location.href
来重定向。然而,我经常在Firefox12.0的控制台上看到下面的错误消息

对本机属性的卷影权限被拒绝

下面是我的代码(在这里添加代码时,我屏蔽了请求URL中的服务器详细信息)


请注意,如果我使用
location.href
,它就像一个符咒。原因可能是什么。如果这是一个重复的帖子(我做了一些基本的搜索,找到了一些帖子,但没有一个特别适合我的情况),我诚挚的道歉,如果是这样的话,请在这里将我与适当的问题联系起来:

位置.替换
是一项功能。通过将值指定给属性,可以尝试覆盖它(不允许这样做)

另一方面,
location.href
只包含允许您更改的字符串


再澄清一下:

location.replace
是一个函数这一事实并不意味着此属性是不可变的,但它使这样做的决定可以理解:
函数应该被调用,而不应该被重写。我想这就是为什么这个属性相对于其他属性是不可变的。包含字符串、数字等的属性更有可能被更改


但是任何属性都可以被标记为不可变的,不管它的值是什么。

我是一个函数,而不是一个值。 浏览器现在假设的是,您希望用自己的函数覆盖作为函数的本机属性。这就产生了错误。 正确的语法是

位置。替换(“url”)

您的代码需要

$(document).ready(function() {

    $(".workout_sel_month").click(function() {
       month_number = $(this).attr('id').replace(/month/g,"");
       weekwise_workout_url = "http://www.example.com/viewrecord/getscheduleformonth";
       location.replace(weekwise_workout_url + "&month_number=" + month_number);
    });

}); 

“我是一个函数而不是一个属性”是不正确的。当然,它是一个属性,但它的值是一个函数。主机(Firefox)不允许您重写,而不是JavaScript本身。@Michael:是的,这是吹毛求疵,但请记住,具有不同JavaScript知识水平的人可能会读到您的答案。精确避免混淆。顺便说一句,函数也是值;)duck and Run向@FelixKling的头扔空的苏打水不幸的是你是对的。。。我只是喜欢科平的东西简单易懂,适合更多的新手用户;-)但因为你是对的,我编辑了我的答案,以更真实地反映事实。现在你遇到了一个难题。那么如何调用非函数属性,因为变量也可以是函数。。。那么,一个不是函数的属性/变量/值的专有名称是什么呢。。。我不知道有没有。也许你可以说持有函数的属性是“方法”(在OOP的意义上),但这并不意味着它们的易变性。哦,不!我怎么会错过这个?非常感谢:)格林会在7分钟后检查这个,因为它现在被锁定了。顺便说一句。这是一个有趣的发现。我计划覆盖Firefox插件中的
history.pushState
。现在我想知道这是否仍然是可能的。。。我希望如此。
$(document).ready(function() {

    $(".workout_sel_month").click(function() {
       month_number = $(this).attr('id').replace(/month/g,"");
       weekwise_workout_url = "http://www.example.com/viewrecord/getscheduleformonth";
       location.replace(weekwise_workout_url + "&month_number=" + month_number);
    });

});