2014-09-05 89 views
4

我正在開發Chrome打包的應用(不是傳統打包的應用);我的應用程序需要包含一個沙盒iframe(用於運行第三方HTML/JS代碼),其中我需要使用webviewiframe來顯示Youtube視頻。兩者都不起作用;我無法播放任何Youtube視頻。 (該webview作品,然而,當沙盒iframe外使用)Webview和iframe無法在Chrome打包應用中的沙盒iframe中顯示Youtube視頻

主要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中的視頻時,有時會收到消息「An error occurred」 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應用程序。

我很茫然,無法在Web上找到任何相關信息。

  • 爲什麼webview空白時,它裏面是一個沙盒iframe

  • 有什麼我可以做,使以封裝Chrome應用沙盒裏面iframewebview工作iframe顯示Youtube視頻?

+0

可能相關:(的WebView在Chrome瀏覽器擴展標記不可用)[HTTPS:/ /code.google.com/p/chromium/issues/detail?id=250838] – winitzki 2014-09-05 19:04:31

+0

似乎這是行不通的。一些相關鏈接:[https://productforums.google.com/forum/#!category-topic/youtube/playing-and-watching-videos/chrome/AY5QGdPhXlE] – winitzki 2014-09-05 21:50:11

+0

谷歌說「不會修復」[https:///code.google.com/p/chromium/issues/detail?id=180390] – winitzki 2014-09-05 22:11:39

回答

1

您應該直接加載URL到webview,而不是通過一個iframe。 您的主HTML應該包含:

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

直接。
我試圖加載您的網址http://www.youtube ....到瀏覽器示例應用程序,其中加載網址內,似乎工作正常。
瀏覽器示例應用程序可以在這裏找到供參考: webview-samples/browser

+0

不幸的是,我必須使用一個'iframe'。是的,如果沒有'iframe','webview'就可以工作。 – winitzki 2014-09-08 00:16:58

1

一種解決方法是使用其中webview發揮使用iframe視頻。

這會產生一堆其他問題,例如webview的異步性質,webview會悄悄地卸載所有的東西,如果它變得不可見,等等。但至少視頻播放。

其他組合的作品:我嘗試了webview一個webview內,或iframeiframe內,或webviewiframe內。

主要HTML文件:

<webview src="sandbox.html" partition="static"></webview> 

sandbox.html

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

manifest.json

... 
    "permissions": [ 
     "http://www.youtube.com/*", "https://www.youtube.com/*", 
     "webview" ], 
    "sandbox": { 
     "pages": [ "sandbox.html" ] 
    }, 
    "webview": { 
     "partitions": [ 
     { 
      "name": "static", 
      "accessible_resources": ["sandbox.html"] 
     } 
     ] 
    }