【发布时间】:2016-07-31 21:26:14
【问题描述】:
我正在编写一个 Chrome 扩展程序,我想在用户在 youtube.com 上观看视频时检测视频何时开始/结束。我的情况与我读过的其他教程之间的区别在于,我没有在自己的网站上嵌入自己的 youtube 视频,我只想检测用户在 youtube 上观看的视频中的事件。
现在我的 manifest.json 文件包含以下内容脚本:
"content_scripts": [
{
"matches": ["http://*/*","https://*/*"],
"js": ["js/jquery.js", "js/iframe_api.js", "js/contentScript.js"],
"all_frames": true
}
],
我已经下载了 jquery,iframe_api.js 是 https://www.youtube.com/iframe_api 的内容。我的 contentScript.js 文件很简单,我只想在视频准备好后在控制台打印一些东西:
function onYouTubeIframeAPIReady() {
var player;
player = new YT.Player('ytplayer', {
events: {
'onReady': onPlayerReady,
}
});
}
function onPlayerReady(event) {
console.log('It worked!');
}
有人可以帮我吗?内容脚本甚至可以做到这一点,还是我不能访问 youtube 视频的 iframe,因为它不在内容脚本所在的“隔离环境”中?
【问题讨论】:
-
内容脚本只能访问 DOM。他们无法访问 javascript 上下文,但可以将侦听器附加到 dom 节点。
-
@chrmod 这是有道理的。我不确定 youtube iframe 是否被视为 dom 的一部分,但经过进一步检查,它似乎是通过 javascript 动态加载的,因此内容脚本无法访问它是有道理的。但是,我自己找到了一个替代解决方案,请参阅下面的答案。
标签: javascript google-chrome-extension youtube-iframe-api