动态加载外部JS并将响应写入div

时间:2011-04-11 16:22:20

标签: javascript jquery html load

我在页面中嵌入了美味的Feed。当我在div中添加脚本标签时,它显然会在我的其余JS之前加载(在页面底部)。我想在加载所有其他j之后动态地将这个脚本加载到指定的div中。

我已经尝试了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 个答案:

答案 0 :(得分:3)

如果你想在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并将此网址设置为源。

我似乎也会得到不同的行为,具体取决于脚本是跨域加载还是来自同一个域 - 我不太清楚要做什么,因为getScript()应该交叉工作域。

答案 1 :(得分:1)

听起来你想要使用类似窗口加载事件的东西。尝试添加如下所示的处理程序:

$(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了解详情。