我正在开发一个使用Youtube iframe API的网站,我希望在我的网站上的Youtube iframe中允许使用Chrome扩展(Musixmatch,这不是我自己开发的),用于安装了该扩展的用户,这样他们就可以在音乐视频上显示歌词。
我还不清楚我是否能够做到这一点--这是Musixmatch必须允许的事情,还是我真的可以做一些事情?这个问题并不是特定于Musixmatch扩展的。似乎一些Chrome扩展是由Youtube iframe API自动调用的,所以我想也许可以调用特定的扩展。
我很难在互联网上找到关于这方面的信息。我认为这篇文章提到了同样的问题,但从Chrome扩展开发者的角度来看:https://stackoverflow.com/questions/27739727/how-to-make-chrome-extension-work-in-iframe。这里有一篇关于Youtube API触发一个特定的Chrome扩展的文章:Chrome YouTube cast_sender.js console error。
任何帮助或见解都将不胜感激!
发布于 2015-05-07 01:36:52
我不认为你可以这样做,因为扩展自己决定何时注入他们的代码,而不是相反。YouTube通常不会“调用”任何扩展,Chromecast是一个例外--但它是由谷歌提供的,YT希望如此。
例如,对于YouTube,此逻辑可能包含在扩展清单中指定的匹配模式中。如果不更改清单,您就无法“说服”Chrome将其注入到其他地方。
或者,检查可以是代码中的运行时检查。同样,在不改变这一点的情况下,如果扩展不希望被注入到YT的嵌入页面中,它将不会被注入。
发布于 2015-05-06 00:21:09
我不是100%清楚你的问题的范围。如果您询问扩展是否可以访问iframe的DOM,那么答案是否定的-- CSP模型非常明确地禁止这样做。您可以从扩展中对iframe执行postMessage (就像在页面本身中一样……使用contentWindow对象),但使用postMessage仍然只能触发公开的方法,并且已经可以通过YouTube iframe API使用它们。
如果你的问题是关于能够听到iframe API事件并通过iframe API控制播放器,那么是的…这是可能的。您需要将一个脚本注入到页面中,该脚本可以监听事件并触发API方法,然后这个注入的脚本可以与您的后台页面对话,以完成您的扩展需要做的其他事情。关于如何做到这一点,有几个问题……这是最近的一条:
https://stackoverflow.com/questions/30057986
复制相似问题