3

同じページに2つの(異なる)GoogleCSE検索ボックスを実装しようとしています。問題は、最初のインスタンスのみが正しく機能することです。たとえば、ヘッダーにサイト全体の検索ボックスがあり、特定のページでは、サイトの狭いサイロ内を検索する2番目の検索ボックスなどがあります。

これは、各ボックスにgoogleで生成されたコードを使用すると、どちらも同じフォームIDを取得するため、正しく機能しません。これは明らかに無効です。これにより、グーグル透かしブランディングがボックス#2に表示されなくなり、また、ssパラメーター(検索セッション)など、一部の自動/グーグル生成変数が2番目のボックスに対しても生成されなくなります。

これで、検索自体が両方のボックスで機能します。たとえば、ユーザー検索は、正しい結果ページに移動し、正しい結果が表示されます。

私はこの問題を解決しようとしています:2番目のフォームに別のID値を取得させるにはどうすればよいですか(それでも正しく機能します-GoogleのJavaScriptがIDを検索するためcse-search-box)のID属性とNAME属性に一意の識別子を追加しようとしました要素ですが、<form>それによりgoogle.com javascriptが誤動作しました( `cse-search-box'のみを検索すると私は信じています)

コードは次のとおりです。

検索ボックス1:

<form id="cse-search-box" name="cse-search-box" class="search searchHeader" method="get" action="/search">
<input type="hidden" name="cx" value="partner-pub-0000000000000000:000" />
<input type="hidden" name="cof" value="FORID:10" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" id="q" class="text_input" />
<input type="submit" name="sa" value="Search" class="submit" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script>

検索ボックス2:

<form id="cse-search-box" name="cse-search-box" class="search searchWebDirectory" method="get" action="/search">
    <input type="hidden" name="cx" value="partner-pub-0000000000000000:111" />
    <input type="hidden" name="cof" value="FORID:10" />
    <input type="hidden" name="ie" value="UTF-8" />
    <input type="text" name="q" id="q" class="text_input" />
    <input type="submit" name="sa" value="Search" class="submit" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script>
4

2 に答える 2

2

差出人:http ://www.google.com/cse/docs/cref.html

「form」という名前の/coop/ cse / brandのパラメーターは、コードの最初のgetElementByIdを出力します。そのため、http://www.google.com/coop/cse/brand?cse-search-box form = cse-search-box&lang = enを使用すると、ターゲットコードが作成box2され、別のIDでトリガーされます。キーワードsearchbox_demoは予約済みです。

必要に応じて、http: //jsfiddle.net/JTV6f/1/を試してみてください。ただし、あなたが何をしているのかを考えると、私があなたなら、V1またはV2APIのいずれかに切り替えます。

于 2013-04-01T16:28:12.390 に答える
0

これはテスト済みのソリューションです。しばらく時間がかかりましたが、時間がかかり、CSSを常に使用していません。

V1コードを使用します。セットアップ画面で[コードの取得]を選択すると、V1コードのオプションがあります。

検索コードをdivに入れます

div tag

searchcode

end div tag

cse変数を一意にします。これは、コードの先頭の2つの場所になります。

div id='cse' 

そして少し低い

customSearchControl.draw('cse', options);

検索ごとに、これらは同じですが、他の検索とは異なる必要があります。cse0、cse1、cse2を使用しました。

これにより検索が修正されるため、各検索は指定どおりに機能しますが、同じCSSを共有します。

したがって、scoped属性を使用してスタイルをスコープします。

style type='text/css' scoped

検索コードごとにこれを行います。これで、検索に独自のルックアンドフィール、色などを含めることができます。

http://deltaboogie.com/search

ありがとう、ヘアリーラリー

于 2015-01-10T14:19:04.573 に答える