динамически загружать внешний JS и записывать ответ в div - PullRequest
3 голосов
/ 11 апреля 2011

Я встраиваю вкусный канал в мою страницу.Когда я просто добавляю теги script в div, он, очевидно, загружается до остальной части моего JS (внизу страницы).Я хотел бы загрузить этот скрипт в указанный div динамически после загрузки всех других js.

Я пробовал функцию getscript, но она определенно ломает страницу, когда я использую его с .html ():

$('#delicious').html(function(){
$.getScript("http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd"); 
});

Кажется, я не могу понять, как можно распечатать результаты этого файла в #delicious div.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Если вы хотите отобразить скрипт в div, не должно ли это быть примерно так, используя функцию обратного вызова?

$.getScript("http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd", 
             function(data){
                $('#delicious').html(data);
            }); 

Результатом $.getScript() будет XMLHTTPRequestобъект, и кажется, что вы хотите вместо этого текст ответа.

Кроме того, он выглядит как ответ от URL-адреса, который вы дали, пытается вписать скрипт в документ, перезаписывая, таким образом, все содержимое вашей страницы.Если это ваша проблема, вы можете рассмотреть возможность использования iframe и установки этого URL-адреса в качестве его источника.

Я также, похоже, веду себя по-разному в зависимости от того, загружается ли скрипт междоменный или из того же домена- Я не совсем уверен, что с этим делать, поскольку getScript() должен работать междоменный.

1 голос
/ 11 апреля 2011

Звучит так, как будто вы хотите использовать что-то вроде события загрузки окна.Попробуйте добавить обработчик, который выглядит следующим образом:

$(window).load(function() {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = "http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd";
  $('#delicious').append(script);
});

Проверьте jQuery .load () API для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...