在jquery的$(窗口).load(function(){})中运行时google.load无法正常工作;?

时间:2010-06-21 06:20:42

标签: javascript jquery

我正在使用Google AJAX Feed API搜索RSS Feed。当我在下面的例子1中运行我的HTML文档头部中的javascript时,它可以工作(我知道我没有得到任何结果,但这是另一天的问题!),但我需要在加载所有内容时实际运行它。我正在使用jquery,所以我有$(window).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 - Firebug中的输出:

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 - Firebug中的输出

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

即使错误引用Firebug,我也不认为这是原因,因为当我在Safari中查看时,页面的行为相同(屏幕上没有元素)。谢谢你的阅读。

4 个答案:

答案 0 :(得分:3)

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

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

尝试将其添加到code.js文件中。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你肯定是在你的$ doc.ready上面加上jquery吗?

答案 3 :(得分:0)

google Libraries API代替使用google.load:

首选方法是通过标准标记加载库(如<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>中所示,这将导致最快的加载。

关于这一点的好处是你不需要设置google.setOnLoadCallback,并且无论如何都可以在页面加载时使用这些库。