小编Gia*_*kki的帖子

Chrome扩展程序中的SWFobject - API无法使用

嗨!
我正在构建Chrome扩展程序,我需要在后台页面中嵌入SWFobject.
一切正常,除了SWFobject和eventListeners的JavaScript控件.
我的猜测是它与跨域策略有关,因为在Web服务器上测试页面时一切正常.

无论如何,这是一个片段:

在主页面中:

var playerView =  chrome.extension.getBackgroundPage(); 
$('#playerPause').click(function(){
    playerView.playerPause();
});
Run Code Online (Sandbox Code Playgroud)

在后台:

function playerPause() {
    if (postData[nowPlaying].provider == 'youtube' ) {
        player.pauseVideo();
    } 
    else if (postData[nowPlaying].provider == 'soundcloud' ) {
        player.api_pause();
    };
}
Run Code Online (Sandbox Code Playgroud)

eventListeners:

soundcloud.addEventListener('onMediaEnd', playerNext);

function onYouTubePlayerReady(player) {
    player.addEventListener("onStateChange", "function(state){ if(state == 0) { playerNext(); } }");
}
Run Code Online (Sandbox Code Playgroud)

它在控制台中抛出

"未捕获的TypeError:对象#没有方法'pauseVideo'"

因为Youtube嵌入了Soundcloud.

此外,SWFobject像这样嵌入(并且有效):

function loadTrack (id) {
    if(postData[id].provider == 'youtube') {
        swfobject.embedSWF(
            "http://www.youtube.com/e/" + postData[id].url + "?enablejsapi=1&playerapiid=player",
            "player",
            "1",
            "1",
            "8",
            null, …
Run Code Online (Sandbox Code Playgroud)

youtube google-chrome swfobject google-chrome-extension soundcloud

7
推荐指数
1
解决办法
1268
查看次数