Ciao!
Sto costruendo un'estensione di Chrome, in cui ho bisogno di incorporare un SWFobject nella pagina di sfondo.
Tutto funziona, ad eccezione dei controlli JavaScript per SWFobject e EventListeners.
La mia ipotesi è che abbia qualcosa a che fare con i criteri interdominio, perché durante il test della pagina su un server web tutto ha funzionato bene.SWFobject in un Chrome Extension - API Unavaiable
In ogni caso, ecco un frammento:
Nella pagina principale:
var playerView = chrome.extension.getBackgroundPage();
$('#playerPause').click(function(){
playerView.playerPause();
});
Sullo sfondo:
function playerPause() {
if (postData[nowPlaying].provider == 'youtube') {
player.pauseVideo();
}
else if (postData[nowPlaying].provider == 'soundcloud') {
player.api_pause();
};
}
E i eventListeners:
soundcloud.addEventListener('onMediaEnd', playerNext);
function onYouTubePlayerReady(player) {
player.addEventListener("onStateChange", "function(state){ if(state == 0) { playerNext(); } }");
}
Nella console getta
"Uncaught TypeError: Object # has no method 'pauseVideo'"
sia per il Youtube incorporare quello Soundcloud.
Inoltre, il SWFObject è incorporato in questo modo (e lavora):
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'
}
);
}
}
Ci scusiamo per il lungo post, ho voluto fornire il maggior numero di informazioni possibile.
Inoltre, so che il codice non è abbastanza, questa è stata solo la mia seconda applicazione;)
Grazie mille in anticipo a tutti coloro che possono contribuire,
Giacomo
Nessuna risposta per te, ma un suggerimento: il tuo codice YouTube SWFObject dichiara FlashVars in due luoghi diversi; Ti suggerisco di semplificare in un unico metodo. ? enablejsapi = 1 & playerapiid = il giocatore può essere inserito nell'oggetto FlashVars come {autoplay: 1, enablejsapi: 1, playerapiid: "player"}. In alternativa, puoi spostare "autoplay" nella querystring:? Enablejsapi = 1 & playerapiid = player & autoplay = 1 – pipwerks
@pipwerks Grazie per il suggerimento, non so come l'ho dimenticato! – Giakki
Sono confuso su come "giocatore" è definito. A volte è globale (in "playerPause") ea volte è locale (in "onYouTubePlayerReady") forse c'è un suggerimento lì. – mjhm