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

标签 iframe webview youtube sandbox google-chrome-app

我正在开发 Chrome 打包应用程序(不是旧的打包应用程序);我的应用程序需要包含一个沙盒 iframe (运行第 3 方 HTML/JS 代码),其中我需要使用 webviewiframe显示 Youtube 视频。两者都不起作用;我无法播放任何 Youtube 视频。 (但是,webview 在沙盒之外使用时有效 iframe 。)

主 HTML 文件如下所示:

 <iframe src="sandbox.html"></iframe>

文件 sandbox.htmlmanifest.json 中声明.它看起来像这样(我正在尝试两种播放 Youtube 视频的替代方法):
<webview width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k"></webview>
<iframe width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k"></iframe>

当我运行这个应用程序时,webview是一个空的白色矩形。 iframe另一方面,包含封面图像和视频的 Youtube 播放器控件。

首先,为什么是webview空的? webview只要我使用 webview 就可以在这个应用程序中工作(播放视频)沙盒外iframe .当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.

我的 manifest.json拥有所有必要的权限:
 "permissions": [
 "http://www.youtube.com/*", "https://www.youtube.com/*", "webview" ],
 "sandbox": {
   "pages": [ "sandbox.html" ]
 }, ...

我试过 <object data=...> , <embed src=...> , MediaElement - 它们在 Chrome 应用程序中根本不起作用。

我不知所措,在网上也找不到任何相关信息。
  • 为什么是webview当它在沙盒中时为空白 iframe ?
  • 有什么我可以做的webviewiframe在沙盒中工作 iframe在打包的 Chrome 应用程序中显示 Youtube 视频?
  • 最佳答案

    您应该将 URL 直接加载到 webview 中。 ,而不是通过 iframe .
    您的主要 HTML 应包含:

    <webview  width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k"></webview>
    

    直接地。
    我尝试加载您的 URL http://www.youtube .... 进入浏览器示例应用程序,它在 a 中加载 URL 并且似乎工作正常。
    可以在此处找到浏览器示例应用程序以供引用:
    webview-samples/browser

    关于iframe - Webview 和 iframe 无法在 Chrome 打包应用程序的沙盒 iframe 中显示 Youtube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678289/

    相关文章:

    javascript - 如何在 JavaScript 中更改 iframe 的源位置?

    android - 没有找到合适的 EGL 配置错误的 Web View

    java - 如何在android studio中根据设备屏幕的大小调整webview的大小

    youtube - YouTube直播状态始终保持完整

    youtube - 如何通过Google API开发人员获取YouTube视频地理信息?

    youtube - 如何在 APIv3 中列出稍后观看列表?

    html - iframe 中的 Instagram 视频 - 关闭自动播放

    javascript - 重新加载后,iframe 中的 OnLoad 事件不会在 IE8 中触发

    javascript - 我如何在 android 中使用 javascript 将 Edittext 值放入 webview 中的文本字段

    php - 计算最近城市的最有效方法(来自白名单)