Как переключить предложение окна поиска Google (и Википедии) с помощью переключателя?

Я добавил на страницу окно поиска Google и Википедии и ищу способ изменить предложения в зависимости от выбранного переключателя.

Фактически, язык предложений должен меняться в зависимости от выбранного языка.

Вот мой реальный код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Google Suggest Test</title>
 <script type="text/javascript" src="googlesuggest.js"></script>
</head>
<body>
<form action="http://www.google.com/search" id="google_suggest" >
 <div>
  <input name="q" value="" type="text" />
  <input type="submit" value="OK" />
  <input type="hidden" name="complete" value="1" />
  <input type="hidden" name="ie" value="UTF-8" />
  <input type="hidden" name="oe" value="UTF-8" />
  <input type="hidden" name="num" value="30" />
  <input type="hidden" name="channel" value="s" />
  <br />
  <label for="all"><input id="all" type="radio" name="lr" value="" checked="checked" />All</label>
  <label for="lang_en"><input id="lang_en" type="radio" name="lr" value="lang_en" />English</label>
  <label for="lang_fr"><input id="lang_fr" type="radio" name="lr" value="lang_fr" />French</label>
  <label for="lang_de"><input id="lang_de" type="radio" name="lr" value="lang_de" />German</label>
  <label for="lang_ru"><input id="lang_ru" type="radio" name="lr" value="lang_ru" />Russian</label> 
  <label for="lang_es"><input id="lang_es" type="radio" name="lr" value="lang_es" />Spanish</label>
  <br /><br />
 </div>
</form>
<form method="post" action="wikipedia_action.php">
 <div>
  <input type="text" name="wikipedia_field" />
  <input type="submit" value="OK" />
  <br />
  <label for="wik_en"><input type="radio" checked="checked" name="wikipedia" id="wik_en" value="wik_en" />English</label>
  <label for="wik_fr"><input type="radio" name="wikipedia" id="wik_fr" value="wik_fr" />French</label>
  <label for="wik_de"><input type="radio" name="wikipedia" id="wik_de" value="wik_de" />German</label>
  <label for="wik_ru"><input type="radio" name="wikipedia" id="wik_ru" value="wik_ru" />Russian</label>
  <label for="wik_es"><input type="radio" name="wikipedia" id="wik_es" value="wik_es" />Spanish</label>
 </div>
</form>
</body>
</html>

Скрипт googlesuggest.js:

$(document).ready(function(){

window.google = {
    kEI: "wR-4SfmNIMyA-AbluKj5Cg",
    kEXPI: "17259,17291,18169",
    kHL: "fr"
};
var _gjwl = location;
function _gjuc() {
    var a = _gjwl.hash.substring(1);
    if (/(^|&)q=/.test(a) && a.indexOf("#") == -1 && !/(^|&)cad=h($|&)/.test(a)) {
        _gjwl.replace("search?" + a.replace(/(^|&)fp=[^&]*/g, "") + "&cad=h");
        return 1
    }
    return 0
};
window._gjuc && location.hash && _gjuc();

google.y = {};
google.x = function(e, g) {
    google.y[e.id] = [e, g];
    return false
};
window.clk = function(b, c, d, e, f, g, h) {
    if (document.images) {
        var a = encodeURIComponent || escape;
        (new Image).src = ["/url?sa=T", c ? "&oi=" + a(c) : "", d ? "&cad=" + a(d) : "", "&ct=", a(e), "&cd=", a(f), b ? "&url=" + a(b.replace(/#.*/, "")).replace(/\+/g, "%2B") : "", "&ei=wR-4SfmNIMyA-AbluKj5Cg", g].join("")
    }
    return true
};
window.gbar = {
    qs: function() {},
    tg: function(e) {
        var o = {
            id: 'gbar'
        };
        for (i in e) o[i] = e[i];
        google.x(o,
        function() {
            gbar.tg(o)
        })
    }
};

if (google.y) google.y.first = [];
window.setTimeout(function() {
    var xjs = document.createElement('script');
    xjs.src = 'http://www.google.com/extern_js/f/CgJmciswCjgNLCswDjgELCswFjgELCswFzgBLCswGDgDLCswJTjJiAEsKzAnOAAs/4Pb8ykSjyRQ.js';
    document.getElementsByTagName('head')[0].appendChild(xjs)
},
0);
google.y.first.push(
    function(){
        var google_suggest = document.getElementById('google_suggest');
        google.ac.i(
            google_suggest,
            google_suggest.q,
            '',
            ''
        )
    }
)
function _gjp() { ! (location.hash && _gjuc()) && setTimeout(_gjp, 500);
}
window._gjuc && _gjp();

});

PHP из wikipedia_action.php

<?php
$search_field = trim($_POST['wikipedia_field']);
$search_engine = trim($_POST['wikipedia']);
$url_params = preg_replace('/(\ )+/', '+', $search_field);
$url = array('wik_en'=>'http://en.wikipedia.org/wiki/Special:Search?search=', 'wik_fr'=>'http://fr.wikipedia.org/wiki/Special:Search?search=', 'wik_de'=>'http://de.wikipedia.org/wiki/Special:Search?search=', 'wik_ru'=>'http://ru.wikipedia.org/wiki/Special:Search?search=', 'wik_es'=>'http://es.wikipedia.org/wiki/Special:Search?search=');
header('Location:'.$url[$_POST['wikipedia']].$url_params)
?>

На самом деле у меня 2 проблемы…

1. Я заметил в предложениях Google, что изменение kHL: "en" на kHL: "fr" для французского языка или kHL: "de" для Немецкий язык делает трюк, но я не знаю, как его изменить в зависимости от установленного переключателя? (и без некоторого onClick, jQuery должен быть лучше)

2 - Мне также не удалось настроить систему предложений Википедии, поэтому я ищу это (и предложения тоже меняются). Здесь он используется:

http://en.wikipedia.org/wiki/Special:Search

http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Recherche

http://de.wikipedia.org/wiki/Spezial:Suche

И Т. Д.

Любая помощь будет оценена;)


person Mark    schedule 23.04.2009    source источник


Ответы (2)


У вас два скрипта работают независимо? Другими словами, одна страница с Google предлагает, а другая с WP предлагает? Если это так, я бы рекомендовал просто использовать две формы с уникальными идентификаторами, позволяя каждой работать отдельно.

Скройте тот, который вы не используете. Когда вы щелкаете переключатель, чтобы переключить их, скройте одну форму и отобразите другую.

person DisgruntledGoat    schedule 10.05.2009
comment
У меня есть одна форма для Google и другая для Википедии, но обе находятся на одной странице. Но для каждой формы я бы хотел изменить сценарий в зависимости от выбранного языка. - person Mark; 16.05.2009
comment
Извините, я неправильно понял ваш вопрос, и хотя переключатель должен был переключаться между Google и Википедией. Игнорировать. - person DisgruntledGoat; 16.05.2009

Этот пост действительно стоит разбить на 2 отдельных вопроса. Что касается части вашего вопроса, предложенной Google. Вы можете использовать следующий фрагмент кода jquery, чтобы изменить kHL при нажатии переключателя:

<script type="text/javascript">
    $(function(){
        $("#google_suggest input[type='radio']").click(function(){
            alert("kHL Before="+window.google.kHL);
            window.google.kHL = this.id.replace('lang_','');    
            alert("kHL After="+window.google.kHL);
        });   
    });
 </script>

Однако, хотя вы можете сказать по предупреждениям, что kHL изменяется правильно, раскрывающийся список GoogleSuggest не меняет язык. Другими словами, kHL привязан к тому, что было настроено внутри $(document).ready().

Единственное, о чем я могу думать, - это динамически перезагружать googlesuggest.js с событием onchange(). Это то, что вам нужно будет изучить дальше.

person ichiban    schedule 18.05.2009
comment
Вы правы, я разделю этот пост на два или отредактирую его, как только узнаю о системе Википедии и удалю свой вопрос по этому поводу. Я изучу его, попробую ваш код и предложения и дам вам знать. - person Mark; 18.05.2009