2010-06-21 48 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,並且這些庫在頁面加載時都可用。

相關問題