Gia*_*kki 7 youtube google-chrome swfobject google-chrome-extension soundcloud
嗨!
我正在构建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,
{
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'
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
对于冗长的帖子感到抱歉,我想提供尽可能多的信息.
另外,我知道代码不漂亮,这只是我的第二个应用程序;)
非常感谢能够提供帮助的任何人,
贾科莫
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |