Webview和iframe无法在Chrome打包应用程序中的沙盒iframe中显示Youtube视频
我正在开发一款Chrome套装应用程序(不是传统的套装应用程序);我的应用程序需要包含沙盒Webview和iframe无法在Chrome打包应用程序中的沙盒iframe中显示Youtube视频,iframe,webview,youtube,sandbox,google-chrome-app,Iframe,Webview,Youtube,Sandbox,Google Chrome App,我正在开发一款Chrome套装应用程序(不是传统的套装应用程序);我的应用程序需要包含沙盒iframe(运行第三方HTML/JS代码),其中我需要使用webview或iframe来显示Youtube视频。两者都不起作用;我不能播放任何Youtube视频。(但是,webview在沙盒iframe之外使用时有效) 主HTML文件如下所示: <iframe src="sandbox.html"></iframe> 当我运行这个应用程序时,webview是一个空白的白色矩形。
iframe
(运行第三方HTML/JS代码),其中我需要使用webview
或iframe
来显示Youtube视频。两者都不起作用;我不能播放任何Youtube视频。(但是,webview
在沙盒iframe
之外使用时有效)
主HTML文件如下所示:
<iframe src="sandbox.html"></iframe>
当我运行这个应用程序时,webview
是一个空白的白色矩形。另一方面,iframe
包含封面图像和视频的Youtube播放器控件
首先,为什么webview
是空的?只要我在沙盒iframe
外部使用webview
,webview
就可以在这个应用程序中工作(播放视频)。当webview
位于沙箱中时,它会自动拒绝加载任何内容
其次,我运行此应用程序时,控制台出现错误:
GET chrome-extension://boadgeojelhgndaghljhdicfkmllpafd/cast_sender.js net::ERR_FAILED www-embed-player.js:140
GET chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm/cast_sender.js net::ERR_FAILED www-embed-player.js:140
GET chrome-extension://hfaagokkkhdbgiakmmlclaapfelnkoah/cast_sender.js net::ERR_FAILED www-embed-player.js:140
GET chrome-extension://fmfcbgogabcbclcofgocippekhfcmgfj/cast_sender.js net::ERR_FAILED www-embed-player.js:140
GET chrome-extension://enhhojjnijigcajfphajepfemndkmdlo/cast_sender.js net::ERR_FAILED www-embed-player.js:140
当我在沙盒页面中加载上面显示的iframe
时,就会出现这些错误。这些错误很奇怪(为什么Chrome试图从一些随机的Chrome扩展中加载JS文件?)
当我尝试在iframe
中开始播放视频时,我有时会从Youtube播放器收到消息“发生错误”,有时没有消息,但播放器变黑。在所有情况下,控制台上都会出现以下错误:
XMLHttpRequest cannot load https://www.youtube.com/get_video_info?html5=1&video_id=S2VXOd3uXh8&cpn=Rso…=en_US&sts=16309&lact=11140&width=300&height=300&iframe=1&c=web&cver=html5. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Mymanifest.json
拥有所有必要的权限:
"permissions": [
"http://www.youtube.com/*", "https://www.youtube.com/*", "webview" ],
"sandbox": {
"pages": [ "sandbox.html" ]
}, ...
我尝试了
,
,-它们在Chrome应用程序中都不起作用
我不知所措,在网上也找不到任何相关信息
- 为什么
在沙盒webview
中时为空iframe
- 我可以做些什么来让
或webview
在一个打包的Chrome应用程序中的沙盒iframe
中工作,以显示Youtube视频iframe
网络视图中,而不是通过iframe
。
您的主HTML应该包含:
<webview width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k"></webview>
直接。
我试着加载你的URL。。。。将URL加载到浏览器示例应用程序中,该应用程序将URL加载到
可在此处找到浏览器示例应用程序以供参考:
一种解决方法是使用webview
,在其中使用iframe
播放视频
这就产生了一系列其他问题,比如webview
的异步特性,webview
在不可见的情况下会自动卸载所有内容,等等,但至少会播放视频
其他组合都不起作用:我在webview
中尝试了webview
,或者在iframe
中尝试了iframe
,或者在iframe
中尝试了webview
主HTML文件:
<webview src="sandbox.html" partition="static"></webview>
在manifest.json
中:
...
"permissions": [
"http://www.youtube.com/*", "https://www.youtube.com/*",
"webview" ],
"sandbox": {
"pages": [ "sandbox.html" ]
},
"webview": {
"partitions": [
{
"name": "static",
"accessible_resources": ["sandbox.html"]
}
]
}
可能相关:(webview标签在chrome扩展中不可用)[似乎这不起作用。一些相关链接:[谷歌说“不会修复”[不幸的是,我必须使用iframe
。是的,如果没有iframe
,webview
可以工作。
<iframe width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k"></iframe>
...
"permissions": [
"http://www.youtube.com/*", "https://www.youtube.com/*",
"webview" ],
"sandbox": {
"pages": [ "sandbox.html" ]
},
"webview": {
"partitions": [
{
"name": "static",
"accessible_resources": ["sandbox.html"]
}
]
}