過去幾天YouTube嵌入式API出現問題。問題是,當您使用官方API嵌入視頻時,它根本不允許您訪問API。當您嘗試訪問API時,您會在日誌(IOS)中看到錯誤消息,並且如果您嘗試通過API播放視頻,則視頻會變黑。如果您通過API加載它,但不使用該API,用戶可以通過點擊播放視頻。YouTube在iOS和Android上嵌入了API問題
問題仍然存在以下瀏覽器:
在iPad和iPhone IOS 7瀏覽器IOS 7 Safari瀏覽器在iPad和iPhone 的Android 4.0瀏覽器
(我的播放按鈕,使用API來播放視頻和產生錯誤) 的jsfiddle:http://jsfiddle.net/frdd8nvr/6/
錯誤消息:
Unable to post message to https://www.youtube.com. Recipient has origin http://fiddle.jshell.net.
postMessage[native code]:0
Jwww-widgetapi.js:26:357
Nwww-widgetapi.js:25
(anonymous function)[native code]:0
html5player.js:1201:97
Blocked a frame with origin "https://www.youtube.com" from accessing a frame with origin "http://jsfiddle.net". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.
一些調試信息:
當我看到API在網站上創建iframe。 src是某個時間的http和某個時間的https。
我的測試表明,大多數時候YouTube的服務器只是位置:https://開頭......請求到HTTPS URL,但在10%左右,他們送達適當的內容的HTTP請求。
我認爲這個問題與強制https有關,但我無法弄清楚解決方案。 你有沒有經歷過?你有這種問題的解決方案嗎?這是一個YouTube的錯誤?
我的測試代碼:
<div id="myvideo"></div>
<button id="play-button">Play</button>
JS:
var tag = document.createElement("script");
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
onYouTubeIframeAPIReady = function() {
var vars = {
enablejsapi: 1,
origin: window.location.protocol + "//" + window.location.host,
autoplay: 0,
modestbranding: 1,
wmode: "opaque",
forceSSL: false
};
if (+(navigator.platform.toUpperCase().indexOf('MAC') >= 0 && navigator.userAgent.search("Firefox") > -1)){
vars.html5 = 1;
}
var playerobj = new YT.Player('myvideo', {
videoId: 'ZPy9VCovVME',
wmode: 'opaque',
playerVars: vars,
events: {
onReady: function(){
$('#play-button').on('click', function(){
playerobj.playVideo();
});
//playerobj.playVideo();
},
onStateChange: function(state){
switch(state.data){
case YT.PlayerState.PLAYING:
break;
//case YT.PlayerState.PAUSED:
case YT.PlayerState.ENDED:
break;
}
}
}
});
}
我不知道,也許我不明白的東西,但你的jsfiddle工作正常。你的意思是它只在ios上? – mpgn 2014-09-05 18:14:12
它不適用於IOS和Android,並且在控制檯上出現了我寫的錯誤。對於我來說,iframe重定向到https時無法正常工作,但我無法找到如何防止重定向...也許你從不同的服務器或不同的服務器軟件版本運行的響應。我認爲這可能是有可能的,因爲有時候我沒有重定向到https .. – 2014-09-06 19:29:07