Webview和iframe无法在Chrome打包应用程序中的沙盒iframe中显示Youtube视频

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是一个空白的白色矩形。

我正在开发一款Chrome套装应用程序(不是传统的套装应用程序);我的应用程序需要包含沙盒
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.
My
manifest.json
拥有所有必要的权限:

 "permissions": [
 "http://www.youtube.com/*", "https://www.youtube.com/*", "webview" ],
 "sandbox": {
   "pages": [ "sandbox.html" ]
 }, ...
我尝试了
,-它们在Chrome应用程序中都不起作用

我不知所措,在网上也找不到任何相关信息

  • 为什么
    webview
    在沙盒
    iframe
    中时为空

  • 我可以做些什么来让
    webview
    iframe
    在一个打包的Chrome应用程序中的沙盒
    iframe
    中工作,以显示Youtube视频


您应该直接将URL加载到
网络视图中,而不是通过
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"]
        }
      ]
    }