Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用预加载的搜索字符串立即执行Google自定义搜索(V2)?_Javascript_Search - Fatal编程技术网

Javascript 如何使用预加载的搜索字符串立即执行Google自定义搜索(V2)?

Javascript 如何使用预加载的搜索字符串立即执行Google自定义搜索(V2)?,javascript,search,Javascript,Search,我的任务是将地面军事系统添加到网站。在我按照说明创建我的免费GCS()并将提供的代码片段粘贴到适当的位置后,搜索框和按钮组件呈现OK,用户可以输入搜索字符串,运行搜索并查看结果。到目前为止还不错 但是,当组件第一次呈现时,我希望能够将预先输入的字符串传递到框中,并以编程方式立即执行搜索。这个钻头坏了 我目前拥有的代码如下所示,由提供的代码片段加上一些额外的代码组成,这些代码是从我对自定义搜索元素Control API doc()的阅读中派生出来的,旨在实现“立即执行”: <div clas

我的任务是将地面军事系统添加到网站。在我按照说明创建我的免费GCS()并将提供的代码片段粘贴到适当的位置后,搜索框和按钮组件呈现OK,用户可以输入搜索字符串,运行搜索并查看结果。到目前为止还不错

但是,当组件第一次呈现时,我希望能够将预先输入的字符串传递到框中,并以编程方式立即执行搜索。这个钻头坏了

我目前拥有的代码如下所示,由提供的代码片段加上一些额外的代码组成,这些代码是从我对自定义搜索元素Control API doc()的阅读中派生出来的,旨在实现“立即执行”:

<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> 

(函数(){
var cx='(我的搜索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);
})(); 
gname=“2DSearch”
var element=google.search.cse.element.getElement(“2DSearch”);
元素。prefillQuery(primarySearch);
元素。执行(primarySearch);
primarySearch是我想要自动搜索的字符串。当组件渲染时,字符串“gname=“2DSearch”短暂出现,然后在搜索组件出现之前再次消失,然后不会发生任何其他情况

这一问题似乎有一些相似之处(未回答):

我在网上搜索了好几个小时,没有找到其他相关的东西

有人能告诉我为什么它不起作用和/或我需要做什么吗

很抱歉,我已经做了很多编程工作,但对于HTML和javascript几乎一无所知。 谢谢 吉姆

我发现Chrome控制台显示以下错误: 未捕获引用错误:未定义google

我的代码现在如下所示:

<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>

(功能(){
变量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);
})();
var element=google.search.cse.element.getElement(“2DSearch”);
元素。prefillQuery(primarySearch);
元素。执行(primarySearch);
在控制台中,我现在又看到了以下内容:

XMLHttpRequest无法加载(在此处插入上面不允许发布的jsapi链接)。访问控制Allow Origin不允许使用源(在此插入我的本地主机的URL)

网络上有很多类似错误的引用,每一个都略有不同,建议的解决方案涉及JSON、JQUERY、AJAX等,但我发现没有任何东西与我试图做的事情直接相关(即向我的代码提供定义了“google”的文件或库),我试过的都没用

谈论如何用蜡烛在煤矿中找到自己的路……:)
干杯

我已经使用了gcse回调选项(我还更改了CSE控制面板中的布局,以防止默认覆盖)


函数gcseCallback(){
如果(document.readyState!=“完成”)
返回google.setOnLoadCallback(gcseCallback,true);
render({gname:'gsearch',div:'results',tag:'searchresults-only',attributes:{linkTarget:''}});
var element=google.search.cse.element.getElement('gsearch');
元素execute('这是我的查询');
};
窗口。\uuu gcse={
parsetags:'显式',
回调:gcseCallback
};
(功能(){
var cx='您的引擎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);
})();

您可以通过URL传递搜索词吗

<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>

(功能(){
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);
})();

如果您通过
yourdomain.com/search?term=searchword调用您的“搜索”页面,搜索结果会立即显示。

我已经复制了该页面,但没有显示搜索框?如果(document.readyState!=“complete”)返回google.setOnLoadCallback(gcseCallback,true),请尝试将“searchresults only”更改为“search”,我必须删除两行
if(document.readyState!=“complete”)根据html格式,atribute应该是
data gname=…
而不是
gname=…
<gcse:search gname='abcd'></gcse:search>
<gcse:search gname='abcd'></gcse:search>
google.search.cse.element.getElement('abcd').execute(query);