我可以在Google Loader运行后运行JavaScriptfunction吗?

我正在使用google.load()加载Google API,我需要处理一些由它构建的内容,但我需要在它已经完全加载后运行JavaScript,有没有办法确保发生?

这是我如何构建图像列表,我需要为每个img标签添加一个属性,但是在它构建完成之后才能这样做?

 google.load("feeds", "1"); function initialize() { var feed = new google.feeds.Feed("myfeed.rss"); feed.load(function(result) { if (!result.error) { var container = document.getElementById("feed"); for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var entryTitle = entry.title; var entryContent = entry.content; imgContent = entryContent + "

"+entryTitle+"

"; var div = document.createElement("div"); div.className = "image"; div.innerHTML = imgContent; container.appendChild(div); } } }); } google.setOnLoadCallback(initialize);

一个简单的方法是在setOnLoadCallback创建一个匿名函数, setOnLoadCallback所示:

 google.setOnLoadCallback(function(){ //Run the Initialize Function initialize(function(){ //Run anything else here like alert("My function can run here :)") }); }); 

然后只需修改初始化函数。

f unction initialize() { > function initialize(callback) {这样你就不会将匿名函数传递给初始化。

然后在feed.load(function(result) {}); 你可以做callback()来激活你的回调。


你说匿名函数让你感到困惑,让我先向你展示一些编写函数的方法

  • function hello(){}
  • hello = function(){}

以上是非匿名函数

匿名函数是未分配给变量的函数,因此解析器将遍历函数并且不执行它

 alert("Start") function() { alert("Middle") } alert("End"); 

运行上面的内容将在对话框中显示“开始”和“结束”,但中间将永远不会显示,因为该function尚未执行。

function如下:

 ( F )( P ) 

其中F是匿名函数,P是应该在范围内的参数,您可以直接运行匿名函数,而无需将函数赋值给变量liek,因此:

 alert("Start") ( function(Doc){ alert("Middle"); } )(document) alert("End") 

所以document被传递到匿名函数并成为该范围内的Doc,而Start,Middle和End都将被执行为使用自执行匿名函数

好的,所以我可能已经超越了解释如此生病,只是很快就会告诉你原始方法是如何工作的

http://en.wikipedia.org/wiki/Ajax_(programming)

Ajax是异步的,这意味着当您调用google等服务器获取某些信息时,您的javascript将继续执行,这意味着您等待javscript执行的数据时…

这就是我们投入回调的原因,就像initialize回调一样,谷歌Javascript库在获取数据时执行,何时创建我们自己的并在我们想要的时候执行。

是的, API文档指定您可以在google.load()方法的第三个参数中包含回调函数。

像这样的东西应该工作:

 google.load("jquery", "1.4.2", { callback: function() { alert('Finished!'); } });