【问题标题】:How to load google custom search onclick如何加载谷歌自定义搜索onclick
【发布时间】:2014-07-20 15:03:27
【问题描述】:

这可能是一个愚蠢的问题,但我是 javascript 的新手......

我有一个使用谷歌自定义搜索 (V2) 的静态网站。谷歌提供的脚本是异步加载的,这很好,但一天只有几个搜索,所以我正在寻找一种解决方案,只有在用户点击搜索表单时才加载自定义搜索“东西”,以获得更快的页面加载。

我使用了两个单独的 div,一个用于搜索框(隐藏在 div 上以创建我的自定义样式),一个用于搜索结果(弹出布局)。

<div class="hide-search">
    <div class="gcse-searchbox-only"></div> 
</div>
<form id="GOOGLE ID">
    <input value="GOOGLE ID" name="cx" type="hidden" />
    <input value="FORID:11" name="cof" type="hidden"/>
    <div class="column-twelve">
        <input id="q" name="q" type="text" />
    </div>
    <div class="column-twelve">
        <button type="submit" class="button mini">Search</button>
    </div>  
</form>

在页面后面

<div class="gcse-searchresults-only"></div>

在关闭body标签之前,我添加了以下谷歌提供的代码

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

该网站也使用 jquery。

有没有办法仅在(以及何时)用户点击搜索字段时才加载脚本?我希望向我的用户提供此搜索服务,但仅限于必要时且不会影响页面加载速度。

提前致谢。

更新

使用 jquery 和 php 解决的问题。我使用的 Google 自定义搜索脚本会重新加载页面并添加一些 GET 变量。

这是一个丑陋的解决方案,但我将 google 脚本移动到外部 .js 文件并将此代码添加到页面中:

<?php
if(isset($_GET['cx']))
echo "
<script>
$.getScript( '../template/js/g-search.js'); 
</script>
";
else echo"
<script>
$('#q').click(function(){
$.getScript( '../template/js/g-search.js');
})
</script>
";
?>

这样,如果用户第一次访问该页面,只有在他点击表单输入时才会加载脚本,从而加快页面加载速度。如果单击搜索按钮后页面重新加载,则脚本会自动加载并且一切正常。

糟糕的解决方案,但至少是一个解决方案!

【问题讨论】:

  • 点击搜索时重定向到另一个页面。
  • 我尝试了 $('#q').click( --script -- ) 和 $('#q').focus( --script -- ),但是脚本根本不工作...
  • 请问我该把代码放在哪里?
  • 我该怎么处理这个位

标签: javascript html google-custom-search


【解决方案1】:

这个网站有一个脚本可以根据需求加载脚本http://jmperezperez.com/ondemand-javascript-lazy-loading-stubs/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多