2014-10-20 109 views
0
var track_url = data.result; 

SC.get('/resolve', { 
    url: track_url 
}, function(track) { 
    console.log(track.id); 
    $('#player').append('<iframe id="soundcloud_widget" src="http://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/' + track.id + '&show_artwork=true&liking=true&sharing=true&auto_play=true" width="1280" height="720" frameborder="no"></iframe>'); 
    var q = $('#player').get(0); 
    console.log(q); 
    var widget = SC.Widget(document.getElementById('soundcloud_widget')); 
    widget.bind(SC.Widget.Events.READY, function() { 
     console.log("test1"); 
    }); 
    widget.bind(SC.Widget.Events.FINISH, function() { 
     console.log("test2"); 
    }); 
}); 

我正在使用此代碼在我的頁面上動態地嵌入一個soundcloud播放器。每次請求一首新歌曲時,它會刪除以前的播放div元素並將其重新播放到HTML,以便您可以播放新歌曲。我有這個工作的YouTube API,但無法讓它爲soundcloud工作。事件不會發生。我得到一個錯誤,在這條線:getelementbyid附加元素

var widget = SC.Widget(document.getElementById('soundcloud_widget')); 

的錯誤是:

Uncaught TypeError: undefined is not a function ?n=2071:211(anonymous function) ?n=2071:211(anonymous function) sdk.js:1request.onreadystatechange sdk.js:1 

現在我相信這個錯誤發生,因爲當我追加了新的iframe的DOM數據的心不是被更新,所以「 soundcloud_widget'元素不被'getelementbyid'找到。不幸的是,就我個人而言,這是可以實現的。

+0

什麼是您試圖插入它的htmp? – cpoDesign 2014-10-20 08:31:46

回答

0
var track_url = data.result; 

SC.get('/resolve', { 
    url: track_url 
}, function(track) { 
    console.log(track.id); 
    $('#player').append('<iframe id="soundcloud_widget" src="http://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/' + track.id + '&show_artwork=true&liking=true&sharing=true&auto_play=true" width="1280" height="720" frameborder="no"></iframe>'); 
    var q = $('#player').get(0); 
    console.log(q); 

    var element = $('#soundcloud_widget'); 
    var widget = SC.Widget(element); 
    widget.bind(SC.Widget.Events.READY, function() { 
     console.log("test1"); 
    }); 
    widget.bind(SC.Widget.Events.FINISH, function() { 
     console.log("test2"); 
    }); 
}); 

嘗試吐元素越來越

VAR元= $( '#soundcloud_widget');

而且使用元素

var widget = SC.Widget(element); 

這應該給你的錯誤更好。

+0

我試過了,var widget = SC.Widget(element);所以我仍然堅持。 SC是明確定義的,widget是被引用的庫的一部分,所以錯誤肯定是由元素通過jQuery添加並被getElemenyById獲取 – Triston 2014-10-20 09:19:22

+0

更新了我的示例,要使用jquery,元素是否存在於您的頁面上? – cpoDesign 2014-10-20 09:25:35

+0

我檢查了元素的輸出,是的它返回一個iframe輸出。所以我想代碼必須在soundcloud api中,但我已經耗盡谷歌搜索。這將是有趣的 – Triston 2014-10-20 09:40:05