こんにちは!
バックグラウンドページにSWFオブジェクトを埋め込む必要があるChrome拡張機能を構築しています。
SWFobjectとeventListenersのJavaScriptコントロールを除き、すべて機能します。
ウェブサーバー上のページをテストしている間はすべて正常に機能していたので、クロスドメインポリシーとは関係があります。Chrome拡張機能のSWFオブジェクト - API Unavaiable
とにかく、ここに抜粋です:
メインページで:バックグラウンドで
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();
};
}
そしてイベントリスナ:
コンソールでsoundcloud.addEventListener('onMediaEnd', playerNext);
function onYouTubePlayerReady(player) {
player.addEventListener("onStateChange", "function(state){ if(state == 0) { playerNext(); } }");
}
それはYouTubeの両方のための
"Uncaught TypeError: Object # has no method 'pauseVideo'"
をスローは、て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'
}
);
}
}
申し訳ありませんが、私はできるだけ多くの情報を提供したかったです。
また、私は、コードがきれいではありません知っている、これは私の第二のアプリケーションだった;)を助けることができる誰にも事前に
どうもありがとう、
ジャコモ
答えはありませんが、あなたのYouTube SWFObjectコードは2つの異なる場所でFlashVarsを宣言しています。私はあなたが単一の方法に単純化することをお勧めします。 ?enablejsapi = 1&playerapiid = playerは{autoplay:1、enablejsapi:1、playerapiid: "player"}のようにFlashVarsオブジェクトに挿入できます。 ?enablejsapi = 1&playerapiid = player&autoplay = 1 – pipwerks
@pipwerks提案のおかげで、私はそれを忘れてしまったのか分かりません! – Giakki
"player"の定義方法が混乱しています。場合によってはそのグローバル(「playerPause」内)と時にはローカル(「onYouTubePlayerReady」内)のヒントがあります。 – mjhm