IE9:设置 document.domain 时访问被拒绝

Posted

技术标签:

【中文标题】IE9:设置 document.domain 时访问被拒绝【英文标题】:IE9: Access is denied when set up document.domain 【发布时间】:2012-05-12 01:16:26 【问题描述】:

在 IE9 上使用带有 CLEditor 的 document.domain 时遇到问题。当我添加 document.domain 时,我收到错误消息“SCRIPT5:访问被拒绝。”。它适用于 Firefox 以及当我删除 document.domain 时。我还是没有使用跨子域iframe,所有iframe都在同一个域中。

如何在不删除 document.domain 的情况下修复它?

这是我设置 document.domain 的方法:

  <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
  <script type="text/javascript">
    document.domain = 'mydomain.com';
  </script>
  <script type="text/javascript" src="jquery.cleditor.js"></script>

这是出现错误的部分 CLEditor 代码:

      // Create a new iframe
    var $frame = editor.$frame = $('<iframe frameborder="0" src="javascript:true;" id="iframe">')
      .hide()
      .appendTo($main);

    // Load the iframe document content
    var contentWindow = $frame[0].contentWindow,
      doc = editor.doc = contentWindow.document,     // here is the error message
      $doc = $(doc);

这是 CLEditor 的完整源代码: http://premiumsoftware.net/cleditor/jquery.cleditor.js

【问题讨论】:

【参考方案1】:

要使用document.domain,需要在通信双方设置相同的字符串——这里,在iFrame和parent中都设置。

【讨论】:

我仍然没有开始在不同的子域上使用 iframe。 iFrame 和父级在同一个子域上。他们都在同一个域和同一个页面。如果 iFrame 是这样由 JavaScript 创建的,我认为 IE9 不允许通信: var $frame = editor.$frame = $('

以上是关于IE9:设置 document.domain 时访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

从 Rails 设置 document.domain 的 DRY 方式

jQuery - 如果存在,获取 document.domain 的值

是否可以使用数据 src 内部 document.domain 设置 iframe?

js设置document.domain实现跨域

Facebook SDK + Google SDK:被访问的框架将“document.domain”设置为“facebook.com”

即使正确设置了 document.domain,跨子域 ajax 请求也会被拒绝