我正在使用Youtube Chrome扩展中的Youtube播放器API。
我的目标是能够使用pageAction的弹出框从我的内容脚本控制Youtube网站上的播放器控件。Chrome扩展中的Youtube播放器API
它是这样的 -
点击“播放”按钮,在弹出发送消息给内容的脚本,内容脚本接收消息并使用播放器API事件“的playVideo()”来播放视频。
由于内容脚本和页面本身是相互隔离的,我不能简单地从页面获取播放器的对象,并且从我理解的我不能使用消息从对象发送对象页面转到内容脚本。
现在,我可以通过使用HTML5视频事件绕过所有这些麻烦,但不幸的是,由于Flash仍在使用中,因此这不适用于直播视频流,所以我没有别的选择,只能加载和使用播放器API,我正确吗?
有没有办法在Youtube网站上使用URL参数控制玩家?
(我真的更喜欢加载一个额外的脚本和外部的一切)
谈到代码我想获得帮助设置需要能够加载外部脚本的权限。
我看到有需要在manifest
文件中声明content_security_policy
,但我不明白语法以及如何写下它,所以我希望有一个示例以及其他任何需要的内容。
在我的内容脚本我使用来自YouTube播放器API文档所采取的下一个代码注入脚本:
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubeIframeAPIReady() {
console.log('--- The YT player API is ready from content script! ---');
}
YouTube视频的嵌入式iframe需要在URL中包含enablejsapi = 1。 YouTube未在其网站上使用iframe API,因此这不起作用。 – kel 2015-03-24 22:59:45
@kel:你的意思是使用URL参数来控制播放器不会正常工作,因为当使用播放器API时它可以工作,你可以打开控制台并输入这个例如:'document.getElementById('movie_player ').playVideo()',你会发现它效果很好:)现在的问题是如何加载它在内容脚本中使用请。 – 2015-03-24 23:42:50
谷歌关于如何在扩展(而不是内容脚本)上注入js。这使您可以访问玩家对象。 – 2015-03-25 04:32:37