允许Youtube iframe显示与Youtube.com兼容的Chrome扩展程序

时间:2015-05-05 16:03:47

标签: google-chrome iframe google-chrome-extension youtube youtube-api

我正在使用Youtube iframe API开发一个网站,我想在Google Chrome浏览器上使用我的网站上的Youtube iframe时允许Chrome扩展程序(Musixmatch,我自己不开发),用户谁安装了这个扩展程序,以便他们可以在音乐视频上显示歌词。

我不清楚我是否能够实现它 - 它是Musixmatch必须允许的东西,还是我真的可以做某事?此问题并非针对Musixmatch扩展。似乎Youtube iframe API会自动调用某些Chrome扩展程序,因此我认为可以调用特定的扩展程序。

我很难在互联网上查找有关该信息的信息。我认为这篇文章引用了同样的问题,但从Chrome扩展程序开发人员的角度来看:https://stackoverflow.com/questions/27739727/how-to-make-chrome-extension-work-in-iframe。以下是有关Youtube API触发特定Chrome扩展程序的帖子:Chrome YouTube cast_sender.js console error

任何帮助或见解都将不胜感激!

2 个答案:

答案 0 :(得分:0)

我认为你不能这样做,因为扩展决定了他们何时注入他们的代码,而不是相反。 YouTube通常不会打电话给#34;任何扩展程序,Chromecast都是一个例外 - 但谷歌是YT期待的。

例如,在YouTube的情况下,此逻辑可能包含在扩展程序清单中指定的匹配模式中。在不改变清单的情况下,您无法说服" Chrome将其注入其他地方。

或者,检查可以在代码中运行。同样,如果没有改变这一点,如果扩展名不希望被注入到YT的嵌入页面中,那么它就不会。

答案 1 :(得分:-1)

我不是100%明确你的问题范围。如果你问一个扩展是否可以访问iframe的DOM,那么答案是否定的 - CSP模型非常明确禁止这样做。您可以从扩展程序对iframe执行postMessage(就像您从页面本身那样使用contentWindow对象),但是使用postMessage,您仍然只能触发公开的方法,并且它们已经可以通过YouTube iframe获取API。

如果您的问题是能够听到iframe API事件并通过iframe API控制播放器,那么是的......这是可能的。您需要在页面中注入一个脚本,该脚本可以听到事件并触发API方法,然后注入的脚本可以与您的后台页面通信以执行扩展需要执行的其他操作。有几个关于如何做到这一点的SO问题......这是最近的一个问题:

Youtube player API in Chrome extension