如何允许 chrome 扩展程序访问第三方 API 脚本?
How do I allow a chrome extension to access a third-party API script?
我正在尝试从 YouTube 的 iframe 播放器 API 访问脚本,以便 play/pause 视频,用于 chrome 扩展。我的JS在下面(来自https://developers.google.com/youtube/iframe_api_reference)。
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('video', {
events: {
'onReady': onPlayerReady
}
});
}
function onPlayerReady(event) {
player.playVideo();
}
但是,当我将扩展加载到 Chrome 时,出现以下错误:
Refused to load the script 'https://www.youtube.com/iframe_api' because it violates the following Content Security Policy directive: "script-src 'self'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
我尝试将 URL 添加到 Manifest.json 中的 CSP(如下)。我还删除了所有内联 JS。
"content_security_policy": "script-src 'self' https://www.youtube.com/iframe_api; object-src 'self'"
现在,扩展加载失败并出现错误,我的 CSP 值无效。知道我做错了什么吗?
您可以检查 chrome.scripting.executeScript(),这允许您加载库,然后执行一些使用它的代码。为此,您需要将它与扩展的其余部分放在同一文件夹中(只需将库复制到一个 js 文件)。使用该库的代码必须在 chrome.scripting.executeScript 的初始承诺得到解决后执行。
https://developer.chrome.com/docs/extensions/reference/scripting/#usage
我正在尝试从 YouTube 的 iframe 播放器 API 访问脚本,以便 play/pause 视频,用于 chrome 扩展。我的JS在下面(来自https://developers.google.com/youtube/iframe_api_reference)。
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('video', {
events: {
'onReady': onPlayerReady
}
});
}
function onPlayerReady(event) {
player.playVideo();
}
但是,当我将扩展加载到 Chrome 时,出现以下错误:
Refused to load the script 'https://www.youtube.com/iframe_api' because it violates the following Content Security Policy directive: "script-src 'self'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
我尝试将 URL 添加到 Manifest.json 中的 CSP(如下)。我还删除了所有内联 JS。
"content_security_policy": "script-src 'self' https://www.youtube.com/iframe_api; object-src 'self'"
现在,扩展加载失败并出现错误,我的 CSP 值无效。知道我做错了什么吗?
您可以检查 chrome.scripting.executeScript(),这允许您加载库,然后执行一些使用它的代码。为此,您需要将它与扩展的其余部分放在同一文件夹中(只需将库复制到一个 js 文件)。使用该库的代码必须在 chrome.scripting.executeScript 的初始承诺得到解决后执行。
https://developer.chrome.com/docs/extensions/reference/scripting/#usage