2013-02-20 12 views
6

मुझे अपने पृष्ठ पर खोज परिणामों के बाद मूल रूप से कुछ jQuery कोड चलाने की आवश्यकता है।Google कस्टम खोज परिणामों को लोड करने के बाद कॉल फ़ंक्शन?

<!-- Put the following javascript before the closing </head> tag. --> 

<script> 
    (function() { 
var cx = 'xxxxxxxxx'; 
var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
    '//www.google.com/cse/cse.js?cx=' + cx; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
    })(); 
</script> 

मैं कोड लेकिन कोई लाभ नहीं हुआ में विभिन्न स्थानों में डाल की कोशिश की किया है मेरी समारोह कॉल:

<div id="cse" style="width: 100%;">Loading</div> 
<script src="http://www.google.com/jsapi" type="text/javascript"></script> 
<script type="text/javascript"> 
google.load('search', '1', {language : 'en', style : google.loader.themes.V2_DEFAULT}); 
google.setOnLoadCallback(function() { 
var customSearchOptions = {}; 
var orderByOptions = {}; 
orderByOptions['keys'] = [{label: 'Relevance', key: ''},{label: 'Date', key: 'date'}]; 
customSearchOptions['enableOrderBy'] = true; 
customSearchOptions['orderByOptions'] = orderByOptions; var customSearchControl = new google.search.CustomSearchControl(
    'zzzzzzzzzzzz', customSearchOptions); 
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); 
var options = new google.search.DrawOptions(); 
options.setAutoComplete(true); 
customSearchControl.setAutoCompletionId('zzzzzz:zzzzzzz+qptype:3'); 
options.enableSearchResultsOnly(); 
customSearchControl.draw('cse', options); 
function parseParamsFromUrl() { 
    var params = {}; 
    var parts = window.location.search.substr(1).split('\x26'); 
    for (var i = 0; i < parts.length; i++) { 
    var keyValuePair = parts[i].split('='); 
    var key = decodeURIComponent(keyValuePair[0]); 
    params[key] = keyValuePair[1] ? 
     decodeURIComponent(keyValuePair[1].replace(/\+/g, ' ')) : 
     keyValuePair[1]; 
    } 
    return params; 
} 

var urlParams = parseParamsFromUrl(); 
var queryParamName = "q"; 
if (urlParams[queryParamName]) { 
    customSearchControl.execute(urlParams[queryParamName]); 
} 
    }, true); 
</script> 

या V2 कोड: मैं या तो v1 कोड का उपयोग कर सकते हैं।

मैं एक समारोह है कि गतिशील रूप से कंटेनर खोज परिणामों में दिखाई की ऊंचाई सेट करने की जरूरत है, तो एक बार परिणाम लोड मैं इसे अन्यथा मेरा पेज प्रदर्शित करता है गलत तरीके से कॉल करने की आवश्यकता है।

यहां उनके वी 2 एपीआई दस्तावेज का एक लिंक है: https://developers.google.com/custom-search/docs/element#cse-element और v1: https://developers.google.com/custom-search/docs/js/cselement-reference। मैं कुछ भी नहीं देख सकता जहां खोज परिणाम प्रतिपादन पर कॉलबैक है, केवल प्रारंभिक पर। पागल लगता है हालांकि इस तरह के कुछ के लिए समर्थन नहीं है।

(function() { 
     var cx = 'xxxxxxxxx'; 
     var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 

     gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
      '//www.google.com/cse/cse.js?cx=' + cx; 
     gcse.onreadystatechange = gcse.onload = function() { 
      console.log("executed"); 
      SetMainHeight(20); 
     }; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 

    })(); 

सांत्वना कभी नहीं outputs "मार डाला":

यहाँ मैं v2 के साथ की कोशिश की है है। इसके अलावा मैं अपने कंसोल में नोटिस मैं निम्नलिखित त्रुटि है:

Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL http://www.google.com/cse?q=test&client=google-coop&hl=en&r=s&cx=xxxxx …s1%2Csr1&rurl=http%3A%2F%2Flocalhost%3A58257%2FSearch%3Fq%3Dtest#slave-1-1. Domains, protocols and ports must match.

सुनिश्चित नहीं हैं कि अगर खोज कार्य अभी भी ठीक काम करता है के रूप में मायने रखती है। मैं इसे httph पर स्थानीयहोस्ट पर परीक्षण कर रहा हूं।

+0

आप कंटेनर पर एक न्यूनतम ऊंचाई सेट कर सकते हैं ताकि खोज विफल रहता है कम से कम कुछ एक साथ लेआउट को पकड़ने के लिए संरचना होगी? – Stuart

+0

पहले से ही न्यूनतम ऊंचाई है। मैं अपने चिपचिपा पाद लेख और मेरे पृष्ठ पर विभिन्न कंटेनरों के अन्य गतिशील आकार का काम कर रहा हूं, इसलिए मूल रूप से जब भी jQuery के माध्यम से ऊंचाई बदल जाती है, तो मुझे कुछ ऊंचाइयों को फिर से समझना होगा। – SventoryMang

उत्तर

5

दुर्भाग्य v2 इस क्षमता नहीं है, लेकिन v1 में आप का उपयोग कर सकते हैं:

.setSearchCompleteCallback(object, method)

आप उसे खोज सकते हैं this page पर।

0

वी 2 के लिए, उदाहरण के लिए, कोशिश करते हैं और डोम में यह डालने से पहले जीसीएसई वस्तु (स्क्रिप्ट) के लिए एक ऑनलोड हैंडलर निर्धारित किया है।

gcse.onreadystatechange = gcse.onload = function() { 
    //execute my code 
}; 

मूल रूप से आप के साथ अंत:

<!-- Put the following javascript before the closing </head> tag. --> 

<script> 
    (function() { 
var cx = 'xxxxxxxxx'; 
var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
    '//www.google.com/cse/cse.js?cx=' + cx; 
gcse.onreadystatechange = gcse.onload = function() { 
    //execute your code here 
}; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
    })(); 
</script> 
+0

कोशिश की, काम नहीं करता है। – SventoryMang

+0

= (। –

+0

कोई पासा अभी भी अपने नवीनतम संपादित चेक – SventoryMang

10

पिछला समाधान मेरे लिए काम नहीं किया था, लेकिन यहाँ क्या मेरे लिए काम किया है:

<script> 
    (function() { 

    window.__gcse = { 
     callback: myCallback 
    }; 

    function myCallback() { 
     $('input.gsc-input').keyup(function(e) { if(e.keyCode == 13 || e.which == 13) { console.log('enter pressed'); }}); 
     $('input.gsc-search-button').on('click', function(e) { console.log('clicked');}); 
    } 
    var cx = '002806224466286757728:XXXXXXX'; 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = false; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
     '//www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 
    })(); 
</script> 
<gcse:search></gcse:search> 

आशा इस मदद करता है

+1

यह वह जगह है v2 कस्टम खोज नियंत्रण के लिए प्रलेखन क्या कहता है और ऐसा करने का यही एकमात्र तरीका है मेरा मानना ​​है।आपको खोज स्क्रिप्ट को लोड करने के लिए इंतजार करना होगा, फिर डीओएम में उन चीजों को शामिल करने से पहले निष्पादित करें जिन्हें आप बदलना चाहते हैं। इस प्रकार हमने बटन से टेक्स्ट हटा दिया है, इसलिए हमारी ओवरराइड पृष्ठभूमि छवि शैली ने "खोज" टेक्स्ट के बजाय आइकन दिखाया: विंडो .__ gcse = { कॉलबैक: फ़ंक्शन() { $ ('input.gsc-search बटन '।) वैल (' '); } }; –

+0

कार्य समाधान !!! –

संबंधित मुद्दे