7

やあ!
背景ページに SWF オブジェクトを埋め込む必要がある Chrome 拡張機能を作成しています。
SWFobject と eventListeners の JavaScript コントロールを除いて、すべてが機能します。
Web サーバーでページをテストしている間、すべてが正常に機能したため、クロスドメイン ポリシーと関係があると思います。

とにかく、ここにスニペットがあります:

メインページで:

var playerView =  chrome.extension.getBackgroundPage(); 
$('#playerPause').click(function(){
    playerView.playerPause();
});

バックグラウンドで:

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

そしてeventListeners :

soundcloud.addEventListener('onMediaEnd', playerNext);

function onYouTubePlayerReady(player) {
    player.addEventListener("onStateChange", "function(state){ if(state == 0) { playerNext(); } }");
}

コンソールでスローします

「Uncaught TypeError: Object # has no method '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,
            {
                autoplay: 1
            },
            {
                allowScriptAccess: "always"
            },
            {
                id: "player"
            }
        );
    }
    else if(postData[id].provider == 'soundcloud') {
        swfobject.embedSWF(
            'http://player.soundcloud.com/player.swf',
            'player',
            '1',
            '1',
            '9.0.0',
            'expressInstall.swf',
            {
                enable_api: true, 
                object_id: 'player',
                url: postData[id].url,
                auto_play: true
            },
            {
                allowscriptaccess: 'always'
            },
            {
                id: 'player',
                name: 'player'
            }
        );
    }
}

できるだけ多くの情報を提供したかったので、長い投稿で申し訳ありません。
また、コードがきれいではないことはわかっています。これは私の 2 回目のアプリケーションにすぎません ;)

助けてくれる人に前もって感謝します、
ジャコモ

4

2 に答える 2

0

この拡張機能を見ることができます。Chrome 拡張機能でローカル接続にアクセスすることはできませんが、代わりにコンテンツ スクリプトをプロキシ スクリプトとして実行できます (gae またはその他の無料サーバーでプロキシ ページを提供できます)。

于 2012-06-19T00:27:00.420 に答える