2010-06-21 52 views
2

我使用Google AJAX Feed API来搜索RSS提要。当我在下面例1中的HTML文档头部运行javascript时(我知道我没有得到任何结果,但这是另一天的问题!),但是我需要在加载所有内容时真正运行它。我使用jQuery,所以我有一个$(窗口).load(function(){});方法,但当我在那里运行Google代码时不起作用(例2)。任何人都可以看到我做错了什么?

实施例1 - 的index.html

<head> 
<script type="text/javascript"> 
console.debug("before google load code"); 
google.load("feeds", "1"); 
console.debug("after google load code"); 
google.setOnLoadCallback(loaded); 
function loaded() { 
    console.debug("google loaded"); 
    google.feeds.findFeeds("news", feedSearchDone); 
} 
function feedSearchDone(result) { 
    if (result.error || result.entries.length <= 0) { 
       console.debug("No Results Found"); 
       return; 
      } 
    else { 
     console.debug(result.entries[0].url); 
} } 
</script> 
</head> 

实施例1 - code.js

$(window).load(function() { 
    console.debug("in jquery load function"); 
}); 

实施例1 - 在萤火虫输出:

before google load code 
after google load code 
in jquery load function 
google loaded 
No Results Found 

实施例2 - code.js

$(window).load(function() { 

    console.debug("in jquery load function"); 

    console.debug("before google load code"); 
    google.load("feeds", "1"); 
    console.debug("after google load code"); 
    google.setOnLoadCallback(loaded); 

    function loaded() { 
     console.debug("google loaded"); 
     google.feeds.findFeeds("news", feedSearchDone); 
    } 

    function feedSearchDone(result) { 
     if (result.error || result.entries.length <= 0) { 
        console.debug("No Results Found"); 
        return; 
       } 
     else { 
     console.debug(result.entries[0].url); 

    } } 
}); 

例2 - 萤火虫输出

in jquery load function 
before google load code 
window.loadFirebugConsole is not a function 
[Break on this error] <html lang="en"> 

即使错误指的是Firebug的,我不认为是这样的原因,因为它的页面的行为是相同的(没有任何元素在屏幕上)时,我认为它在Safari中。谢谢阅读。

回答

3

JQuery onload只能在google onLoad回调后使用。

function initialize() { 
    $(function() { 
     // Some other code here 
    }); 
} 
google.setOnLoadCallback(initialize); 

尝试添加到code.js文件。

+0

谢谢你。我是jquery的新手,我如何接受初始化函数中的结果对象? – ben 2010-07-12 05:48:04

+0

不好意思,我的问题没有意义。 – ben 2010-07-12 06:00:25

0

你确定在$ doc.ready之上包含jquery吗?

+0

“示例2 - Firebug中的输出”中的“jquery加载函数”一行指示给我jquery工作正常吗?虽然我对jquery不是很有经验,但我可能是错的吗? – ben 2010-06-23 08:01:36

1

您必须改用$(document).ready,脚本只会在DOMLoad完成后加载。

+0

I t说这个,但我得到同样的错误。我不确定这是否是问题,加载函数正在运行,因为“示例2 - Firebug中的输出”中的“in jquery加载函数”行中有来自 – ben 2010-06-23 08:00:13

+0

您是否正在动态加载此脚本?如果是的话,你需要等待它加载。这里是一个例子http://stackoverflow.com/questions/3084371/lazy-loading-a-plugin-jquery/3084435#3084435 - 奇怪的是,你已经使用google.setOnCallBack funcion,它不工作,检查我的链接,可能会做到这一点。 – BrunoLM 2010-06-23 10:19:37

0

在使用的google.load谷歌的库API状态代替:

的优选方法是加载通过标准代码的库(如在<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>,这将导致在最快的负载

的好的一点是,你不需要设置google.setOnLoadCallback,并且这些库在页面加载时都可用。

相关问题