2014-09-23 26 views
0

我使用Youtube JavaScript API和swfobject嵌入視頻,並且onYouTubePlayerReady永遠不會被調用。這是怎麼回事?以下是我的代碼:onYouTubePlayerReady沒有被調用

<div id="ytapiplayer"> 
    You need Flash player 8+ and JavaScript enabled to view this video. 
</div> 
<script> 
    // Inject YouTube API script 
    var tag = document.createElement('script'); 
    tag.src = '//www.youtube.com/player_api'; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

    var VIDEO_ID='<?php echo $video_id; ?>'; 
    var params = { 
     'allowFullScreen': 'true', 
     'allowScriptAccess': 'always', 
     'allownetworking': 'internal' 
    }; 
    var atts = { 
     'class': 'bilingual-video', 
     'id': 'ytapiplayer' 
    }; 
    swfobject.embedSWF(
     'http://www.youtube.com/v/' + 
      VIDEO_ID + 
      '?enablejsapi=1&playerapiid=ytapiplayer&version=3' + 
      '&showinfo=0&modestbranding=1&controls=0', 
      'ytapiplayer', '500', '400', '8', null, null, params, atts); 
</script> 

<script> 
var ytplayer; 
function onYouTubePlayerReady(playerId) { 
    ytplayer = document.getElementById('ytapiplayer'); 
}; 
</script> 

回答

1

您有allownetworking設置爲'internal';根據定義,這不會讓SWF通過Flash的ExternalInterface API與任何內容進行通信。但是,YouTube JavaScript API依賴於ExternalInterface,所以實際上您已阻止SWF訪問API。

如果刪除該參數,它應該再次開始調用onYouTubePlayerReady函數。

+0

有趣的是,我將該參數設置爲內部,因爲我不希望人們能夠點擊YouTube鏈接並轉到YouTube網址。有沒有另一種方法來防止這種情況? – nnyby 2014-09-26 15:25:30

+0

我將使用iframe API並嘗試阻止點擊。 – nnyby 2014-09-26 15:27:01