javascript - 在 Manifest V2 下的 Google Chrome 扩展中使用 YouTube 的 PlayerAPI - 有效,但会产生大量警告

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

在 v2 下的 Google Chrome 扩展中使用 YouTube 的播放器 API 时,我收到了几条非严重错误消息。

我的 content_security_policy 中有以下定义:

"content_security_policy": 
    "script-src 'self' https://www.youtube.com/player_api https://s.ytimg.com/yt/jsbin/www-widgetapi-vfl9Ni0ki.js; object-src 'self'"

第一个引用 player_api 依赖于 widgetapi。如果您导航到 player_api url 并查看其内容,这一点就很清楚了:

if (!window['YT']) {var YT = {};}if (!YT.Player) {(function(){var s = 'https:' + '//s.ytimg.com/yt/jsbin/www-widgetapi-vflU5wlSl.js';var a = document.createElement('script');a.src = s;a.async = true;var b = document.getElementsByTagName('script')[0];b.parentNode.insertBefore(a, b);YT.embed_template = "\u003ciframe width=\"425\" height=\"344\" src=\"\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e";})();}

一切都很好。我的内容安全政策有效,YouTube 视频加载成功。然而,在幕后,我看到了很多警告:

enter image description here

据我了解,消息“不安全的 JavaScript 尝试使用 URL 访问框架...”无法删除或隐藏。如果有人知道抑制此消息的方法,我将非常感兴趣!

不过,我对“无法将消息发布到...”错误没有任何了解。快速谷歌一下,发现有几个人遇到了类似的问题,但我没有看到任何解决方案。 widgetAPI 都被缩小了——让人很难看到实际发生了什么。

我应该收到这些错误吗?有没有办法减轻错误?或者甚至压制它们(因为它们似乎并没有真正破坏任何东西)?

最佳答案

无法将消息发布到 http://www.youtube.com通过用 $(window).load() 而不是 $(document).ready 包装 YTPlayer 实例化代码来解决。

Uncaught TypeError: Cannot call method 'apply' of null 通过为 onReady、onStateChange 和 onError 提供函数来解决。您不能为这些回调之一提供 null。

关于javascript - 在 Manifest V2 下的 Google Chrome 扩展中使用 YouTube 的 PlayerAPI - 有效,但会产生大量警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411290/

相关文章:

javascript - Selenium:WAITING元素的宽度大于X

javascript - 如何对用户以 html 表单输入的数据应用 stringify?

iframe - 点击iframe时页面跳转到顶部

google-chrome-extension - Chrome 扩展程序 : Capture network log without opening developer tools

google-chrome - chrome.tabs 问题与 chrome.tabs.update 和 chrome.tabs.executeScript

reactjs - 如何配置 Selenium 以在 Chrome 中预安装扩展程序?

javascript - 在 Chaplin js 框架中,以 ! 为前缀的事件是做什么的?意思?

javascript - jquery 动画背景大小 onload

javascript - 使用 Nightwatch.js 切换到一个框架

html - 从 Excel Embed iFrame 中删除底部栏