我遇到了一个只会影响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>
有什么想法吗?