在同一个域

时间:2017-02-28 22:55:53

标签: javascript jquery google-chrome same-origin-policy

我遇到了一个只会影响Google Chrome的奇怪问题。

我正在帮助我的开发人员构建一个托管HTML5横幅的简单投资组合页面。它的工作方式如下:

加载页面后,您将看到客户列表。单击其中一个后,将打开一个引导模式,其中有一个带有为该客户端创建的HTML5横幅示例的轮播。它们中的每一个都被加载到每个轮播幻灯片中包含的iframe中。

现在,横幅仅用于在幻灯片处于活动状态时播放。为此,开发人员为carousel元素添加了两个侦听器:

slid.bs.carousel和shown.bs.modal

每个处理程序的处理程序是相同的:它检查iframe是否已加载,如果是,则发布" play"消息:

function postMessageToIframe(iframe, message) {
    var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

    if (iframeDoc.readyState  == 'complete' ) {
        iframe.contentWindow.postMessage(message, iframe.src);
        return;
    }

    window.setTimeout(function() {
        postMessageToIframe(iframe, message);
    }, 100);
}

$('.carousel').on('slid.bs.carousel', function() {
    postMessageToIframe($(this).find('.active.item iframe')[0], 'play');
});

现在,除了谷歌浏览器之外,这种方法完全可以正常运行,这会引发以下错误:

  

无法阅读' contentDocument'物业来自   ' HTMLIFrameElement':阻止带有原点的框架   " http://xxxx访问跨域框架。

这里有什么奇怪之处:<​​/ p>

  1. 它只对某些横幅执行此操作,而其他正常操作
  2. 域名相同协议和端口
  3. 任何横幅中都没有document.domain或任何此类内容,并且没有任何特殊规则的.htaccess文件
  4. 有什么想法吗?

0 个答案:

没有答案
相关问题