2010-02-03 58 views
2

我使用Google搜索API將一些搜索結果加載到我的頁面中。我想爲回調函數設置一個參數,說明搜索結果應該附加到哪個div。解密Google搜索API:如何引用傳遞給回調函數的參數?

這裏的回調函數的定義,每個谷歌:(?對象,方法,opt_arguments)

.setSearchCompleteCallback

這裏是我如何做它: searcher.setSearchCompleteCallback (document, function() { alert(opt_arguments[0].id); }, new Array(infodiv));

文檔解釋說:「應用程序可以選擇使用opt_arguments傳入上下文參數,然後傳遞給指定的方法。「

是的 - 但如何?我已經傳入了上下文參數,但是如何在函數中引用它?我試着只是調用opt_arguments,但js錯誤清楚地表明它沒有被定義。

該文檔是here

謝謝!

+0

你可以張貼一些示例代碼,這樣我們就可以看到你如何試圖做到這一點? – glomad 2010-02-03 21:32:32

回答

6

基本上,它表示以下內容。您可以綁定事件處理程序像這樣:「搜索完成」

function searchComplete(message) { 
    alert(message); 
} 

function OnLoad() { 
    var searchControl = new google.search.SearchControl(); 
    var webSearch = new google.search.WebSearch(); 

    searchControl.addSearcher(webSearch); 
    searchControl.draw(document.getElementById("searchcontrol")); 
    searchControl.setSearchCompleteCallback(this, searchComplete, "Search Done!"); 

    searchControl.execute('Google') 
} 
google.setOnLoadCallback(OnLoad); 

示例代碼上面會顯示一條消息等結束了。

+0

工作很好,謝謝。 – Summer 2010-02-03 21:41:10

+0

問候!我在這裏發佈了一個問題http://stackoverflow.com/questions/8828069/google-custom-search-getting-access-to-results-對象,讓我生氣,即使你回答沒有直接的答案,它給了我足夠的線索。如果你關心,發佈一個鏈接到這個問題/答案,我會接受它。 – vector 2012-01-12 16:28:36

1

如果您傳遞上下文參數,則您的回調方法應該將該上下文參數作爲參數。

2

它應該是這個樣子:

var myCallbackObject = 
{ 
    myCallbackFunction: function(args) 
    { 
     // args will be whatever someArgs is set to below 
     alert(args); // Array("hey","hello") 
    } 
} 

var someArgs = ["hey", "hello"]; 
// (... set up mySearchObject as the google Search object here) 
mySearchObject.setSearchCompleteCallback(myCallbackObject, myCallbackFunction, someArgs); 
相關問題