2013-06-22 28 views
1

我使用幾個HTMLLoader嵌入在AIR應用程序的YouTube視頻(每加載一個),當我添加兩個以上,這會導致錯誤的API中的所有玩家過去第二。玩家似乎工作正常,但事件從未被調用,並且player.pauseVideo未定義。嵌入多個視頻會導致錯誤的YouTube API

TypeError: Result of expression 'b' [undefined] is not an object. 
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 206 
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 205 
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 204 
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 199 

我的嵌入代碼:

function SetupYoutubePlayer(divName, videoID) { 
    _videoID = videoID; 
    _divName = divName; 
    var tag = document.createElement('script'); 

    tag.src = "https://www.youtube.com/iframe_api"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
} 

var _videoID; 
var _divName; 

var player; 
function onYouTubeIframeAPIReady() { 
    player = new YT.Player(_divName, { 
     height: '100%', 
     width: '100%', 
     wmode: 'opaque', 
     autohide: '1', 
     modestbranding: '1', 
     frameborder: "0", 
     showinfo: '0', 
     videoId: _videoID, 
     playerVars: { 
      'wmode': 'opaque', 
      'rel': 0, 
      'autohide': 1, 
      'modestbranding': 1, 
      'frameborder': 0, 
      'showinfo': 0, 
     }, 
     events: { 
      'onStateChange': onPlayerStateChange 
     } 
    }); 
} 

回答

0

它看起來像你重複調用下面幾行:

var tag = document.createElement('script'); 

tag.src = "https://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

那些只需要執行一次,在YT.Player拉定義和相關的API。如果您確定只執行一次,是否按預期工作?

+0

對於每個「HTMLLoader」只對這些行調用一次,並且每個加載程序都有一個視頻 –

+0

如果對於更熟悉Adobe Air的人來說這很明顯,但是每個HTMLLoader是否都有完全獨立的JavaScript環境? –

+0

是的,我認爲他們的行爲類似於瀏覽器 –