2013-05-31 38 views
6

Tôi đã được giao nhiệm vụ thêm GCS vào một trang web. Sau khi tôi làm theo hướng dẫn để tạo GCS miễn phí (http://www.google.com/cse/sitesearch/create) và dán đoạn mã được cung cấp vào vị trí thích hợp, hộp tìm kiếm & thành phần nút hiển thị OK và người dùng có thể nhập chuỗi tìm kiếm, chạy tìm kiếm và xem kết quả . Càng xa càng tốt.Làm cách nào để Tìm kiếm Tùy chỉnh của Google (V2) thực thi ngay lập tức bằng chuỗi tìm kiếm được tải sẵn?

Tuy nhiên, khi các thành phần hiển thị lần đầu tiên tôi muốn có thể chuyển chuỗi được nhập trước vào hộp và lập trình tìm kiếm được thực hiện ngay lập tức. Bit này không hoạt động.

Mã tôi hiện có như sau, bao gồm đoạn mã được cung cấp kèm theo một số mã bổ sung bắt nguồn từ việc đọc tài liệu API điều khiển yếu tố tìm kiếm tùy chỉnh (https://developers.google.com/custom-search/docs/element) và dự định triển khai 'thực thi ngay':

<div class="content-container"> 
    <script type="text/javascript"> 
     (function() { 
      var cx = '(my search id)'; 
      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> 
    <gcse:search> gname="2DSearch"</gcse:search> 
    <script type="text/javascript"> 
     var element = google.search.cse.element.getElement("2DSearch"); 
     element.prefillQuery(primarySearch); 
     element.execute(primarySearch); 
    </script> 
</div> 

Tìm kiếm chính là chuỗi tôi muốn tự động tìm kiếm. Khi các thành phần hiển thị, chuỗi 'gname = "2DSearch"' xuất hiện một thời gian ngắn sau đó biến mất một lần nữa ngay trước khi các thành phần tìm kiếm xuất hiện, sau đó không có gì khác xảy ra.

Có vẻ như có một số điểm tương đồng ở đây với câu hỏi này (chưa được trả lời): https://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query

Tôi đã tìm kiếm Web một cách vô ích cho một số giờ cho bất cứ điều gì khác có liên quan.

Ai có thể cho tôi biết lý do tại sao nó không hoạt động và/hoặc những gì tôi cần làm?

Lời xin lỗi của tôi, tôi đã thực hiện rất nhiều chương trình nhưng hầu như không biết chữ khi nói đến HTML & javascript. Cảm ơn Jim

tôi phát hiện ra rằng giao diện điều khiển Chrome đang hiển thị các lỗi sau: của router ReferenceError: google không được định nghĩa

Mã của tôi bây giờ trông như thế này:

<div class="content-container"> 
    <script type="text/javascript"> 
     (function() { 
      var cx = '013736134253840884188:fxsx6zqql_y'; 
      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> 

<div class="gcse-search" data-gname="2DSearch"></div> 

<div class="content-container"> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     var element = google.search.cse.element.getElement("2DSearch"); 
     element.prefillQuery(primarySearch); 
     element.execute(primarySearch); 
    </script> 
</div> 

Trong giao diện điều khiển một lần nữa Tôi hiện cũng đang thấy những điều sau:

XMLHttpRequest không thể tải (chèn vào đây liên kết jsapi ở trên mà tôi không được phép đăng). Không cho phép xuất xứ (chèn tại đây URL cho máy chủ cục bộ của tôi) bằng Access-Control-Allow-Origin.

Có rất nhiều tham chiếu đến các lỗi tương tự đối với tất cả trên mạng, mỗi một chút khác nhau, với các giải pháp được đề xuất đề cập đến JSON, JQUERY, AJAX etc.etc, nhưng không có gì mà tôi thấy có vẻ liên quan trực tiếp đến những gì tôi đang cố gắng làm (tức là làm cho có sẵn cho mã của tôi các tập tin hoặc thư viện trong đó 'google' được định nghĩa), và không có gì mà tôi đã cố gắng đã làm việc.

Nói về cố gắng để tìm theo cách của bạn thông qua một mỏ than với một ngọn nến ... :) Cheers

Trả lời

12

tôi đã nhận nó làm việc với các tùy chọn GCSE callback (Tôi cũng đã thay đổi cách bố trí của tôi trong CSE Control Panel để ngăn lớp phủ mặc định).

<script> 
function gcseCallback() { 
    if (document.readyState != 'complete') 
    return google.setOnLoadCallback(gcseCallback, true); 
    google.search.cse.element.render({gname:'gsearch', div:'results', tag:'searchresults-only', attributes:{linkTarget:''}}); 
    var element = google.search.cse.element.getElement('gsearch'); 
    element.execute('this is my query'); 
}; 
window.__gcse = { 
    parsetags: 'explicit', 
    callback: gcseCallback 
}; 
(function() { 
    var cx = 'YOUR_ENGINE_ID'; 
    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="results"></div> 
+0

tôi đã sao chép tính năng này hoạt động nhưng không hiển thị hộp tìm kiếm? chỉ hiển thị kết quả tìm kiếm. – shorif2000

+0

thử thay đổi 'searchresults-only' thành 'search' –

1

Bạn có thể chuyển cụm từ tìm kiếm qua URL không?

<script> 
    (function() { 
    var cx = 'YOURID'; 
    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> 

<gcse:searchbox queryParameterName="term"></gcse:searchbox> 
<gcse:searchresults></gcse:searchresults> 

Nếu bạn gọi trang "tìm kiếm" qua yourdomain.com/search?term=searchword, kết quả tìm kiếm sẽ xuất hiện ngay lập tức.

Các vấn đề liên quan