我被location.replace所面对的这个问题所困扰。我需要模拟一个HTTP重定向(我不希望我的用户因我正在实现的这一特定功能而陷入永无休止的后退按钮惨败中),所以我使用的是location.replace而不是location.href进行重定向。但是,我总是最终在Firefox 12.0的控制台中收到以下错误消息。
Permission denied to shadow native property
以下是我的代码(在此处添加代码时,我从请求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;
    });

});

请注意,如果我改用location.href,它的作用就像是一种魅力。这可能是什么原因? 。如果这是重复的帖子(我进行了一些基本搜索并找到了一些帖子,但都没有一个特别适合我的情况),我表示最诚挚的歉意,在这种情况下,请在此处将我与相应的问题联系起来。 :)

最佳答案

location.replace函数。通过为属性分配一个值,您试图覆盖它(不允许这样做)。

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

参见MDN documentation

要澄清一点:

location.replace是一个函数这一事实并不意味着此属性是不可变的,但是它使得这样做的决定可以理解:
应该调用函数,不应覆盖它们。我认为这就是与其他属性相比不可变的原因。包含字符串,数字等的属性更有可能被更改。

但是任何属性(property),无论其值(value)如何,都可以被标记为不可变的。

关于javascript - “Permission denied to shadow native property”使用location.replace在JavaScript中重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11137720/

10-14 04:22