2014-10-20 2 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, чтобы вы могли воспроизвести новую песню. У меня это работает для API youtube, но я не могу заставить его работать для soundcloud. События не срабатывают. Я получаю ошибку на этой линии:getelementbyid on присоединенные элементы

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

ответ

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"); 
    }); 
}); 

пытаются плюнуть получение элемента

вар элемент = $ ('# soundcloud_widget');

И с помощью элемента

var widget = SC.Widget(element); 

это должно дать вам ошибку лучше.

+0

Я пробовал это, ту же ошибку бросает на var widget = SC.Widget (element); поэтому я все еще застрял. SC определенно определен, виджет является частью библиотеки, на которую ссылаются, поэтому ошибка определенно вызвана тем, что элемент добавляется через jquery и извлекается getElemenyById – Triston

+0

Обновлен мой пример, чтобы использовать jquery, существует ли этот элемент на вашей странице? – cpoDesign

+0

Я проверил выход элемента и да, он возвращает вывод iframe. Поэтому я предполагаю, что код должен быть в soundcloud api, но я исчерпал поиск в Google. Это будет весело – Triston

Смежные вопросы