Tôi về cơ bản cần chạy một số mã jQuery sau khi kết quả tìm kiếm được hiển thị trên trang của tôi. Tôi có thể sử dụng mã v1:Chức năng gọi sau khi tải kết quả tìm kiếm tùy chỉnh của google?
<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>
Hoặc mã v2:
<!-- 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>
Tôi đã thử đặt cuộc gọi chức năng của tôi ở những nơi khác nhau trong các mã nhưng vô ích.
Tôi có chức năng cần đặt động chiều cao của vùng chứa mà kết quả tìm kiếm xuất hiện, vì vậy khi tải kết quả, tôi cần phải gọi nó nếu không trang của tôi hiển thị không chính xác.
Đây là liên kết đến tài liệu API v2 của họ: https://developers.google.com/custom-search/docs/element#cse-element và v1: https://developers.google.com/custom-search/docs/js/cselement-reference. Tôi không thể thấy bất kỳ điều gì có thể gọi lại khi hiển thị kết quả tìm kiếm, chỉ khi khởi tạo. Có vẻ điên rồ mặc dù không có hỗ trợ cho một cái gì đó như thế này.
Dưới đây là những gì tôi đã cố gắng với v2:
(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);
})();
Giao diện điều khiển không bao giờ kết quả đầu ra "hành quyết". Ngoài ra, tôi thấy trong bảng điều khiển của mình, tôi có lỗi sau:
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.
Không chắc chắn rằng chức năng tìm kiếm vẫn hoạt động tốt. Tôi đang thử nghiệm này trên localhost trên http. Ví dụ:
Bạn có thể thiết lập một chiều cao tối thiểu trên thùng sơn để nếu việc tìm kiếm thất bại ít nhất một số cấu trúc sẽ được đặt ra để giữ bố trí với nhau? – Stuart
Đã có chiều cao tối thiểu. Tôi đang làm một số footer dính và kích thước năng động khác của container khác nhau trên trang của tôi, vì vậy về cơ bản bất cứ lúc nào chiều cao được thay đổi thông qua jQuery, tôi cần phải tính toán lại độ cao nhất định. – SventoryMang