尝试从YouTube <iframe> </iframe>捕获console.log消息

时间:2012-02-28 09:25:45

标签: javascript iframe youtube

YouTube HTML5视频<iframe>会针对各种事件(例如加载广告横幅)触发console.log消息。我正在尝试使用JavaScript以编程方式捕获console.log消息,以触发函数,如下所示:

console['log'] = function(msg){
    // Operate on msg
}

要向YouTube <iframe>发送console.log讯息,可使用以下方法(以简写为参考):

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console.log(msg);

但是,以下代码不起作用

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console['log'] = function(msg){
    // Operate on msg from YouTube <iframe>
}

我也尝试过:

window.console = document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console;
console['log'] = function(msg){
    // Operate on msg
}

我不明白的是;如果我能够向YouTube <iframe>调用console.log消息,那么我如何捕获控制台日志消息?如果有这样的方法,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

在最新版本的浏览器中,您无法从包含iframe的页面的其他域访问iFrame中的任何元素,即Chrome v31,Firefox v26,IE11。

它适用于某些特定浏览器的旧版本,但这肯定不适用于跨浏览器。


符合W3C HTML5 embedded content (including iframes) specification的当前浏览器不仅强制实施同源政策​​,还接受新的sandbox属性,以便为iframe指定更多限制。

您可以在此页面中看到支持新标准的浏览器: http://html5test.com/compare/feature/security-sandbox.html

接受新属性的浏览器还必须符合W3C同源策略,因此不允许您访问console对象(或iframe内的任何其他对象)。