【问题标题】:Why does this JavaScript cause a "Permission Denied" error in IE为什么这个 JavaScript 在 IE 中会导致“Permission Denied”错误
【发布时间】:2017-10-30 14:38:17
【问题描述】:

以下代码在 IE 中抛出 Permission Denied 错误,引用 jQuery (1.6.2) line 6244 Char:2:

function addAgreement() {
    var url = window.location.toString();
    var pieces = url.split('/');
    var site_url = url.replace(pieces[pieces.length -1], '');
    $('.login').append('<div id="dialog"></div>');
    $('#dialog').load(site_url + '?page_id=443');
}

$('#dialog').dialog({
    width: 800,
    position: 'top',
    modal: true,
    buttons: {
        "Agree": function() { 
            agreed = true;
            var val = $('#registerform').attr('action') + '&agreed=1';
            $('#registerform').attr('action', val);
            $(this).dialog("close");
            $('#registerform').trigger('submit');
        }, 
        "Disagree": function() { 
            agreed = false;
            $(this).dialog("close"); 
        } 
    }
});

它在 Firefox 中有效——这与同源策略有关吗? jQuery 由 Google CDN 提供服务。

更新 正在加载的内容是一个 WordPress 页面,其中还包含 cufon-yui.js(在本地提供)。我也尝试过在本地提供 jQuery(即不是来自 Google CDN),这没有任何区别。

更新 2 从加载的页面中删除以下脚本标记会阻止错误出现。

<script type='text/javascript' src='<?php echo bloginfo('template_url') ?>/inc/js/cufon-yui.js'></script> 
<script type='text/javascript' src='<?php echo bloginfo('template_url') ?>/inc/js/path/to/font.js'></script>
<script type='text/javascript'>
Cufon.replace('#page')('.title');
</script> 

【问题讨论】:

  • 加载调用中加载的内容与调用页面在同一个子域中,所以我不确定是不是这样。
  • 不是同一个域的问题。返回的 html 是否是有效的 html,这意味着没有失控的属性字符串(缺少尾随引号)并且标签是否正确打开和关闭?另外,您是否肯定该代码仅在包含此代码时才会失败? 1.6.2 有一个bug,当body 标签上有背景图片时,会导致IE 失败。
  • 谢谢。看起来正在加载的内容不是有效的 html,并且不包含 HTML、BODY、HEAD 标记等。删除 load() 调用确实会清除错误。
  • 当您使用 .load() 时,html body 和 head 将从生成的 html 中删除,因为这些标签已经存在于请求 html 的页面上。这不会导致此错误。

标签: javascript jquery internet-explorer


【解决方案1】:

对于 AJAX 请求,www.被视为子域并打破 xmlhttprequestobject 的同源策略。确保您的 AJAX 请求中的域与页面的域和您的 javascript 文件相匹配。

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多