0

まさにここに問題があります。検索フォームを含む HTML ページがあり、特定のリファラー URL の特定の部分を取得して、それらを検索フォームに事前入力する必要があります。

そのため、ユーザーはクエリを手動で入力せずに検索をクリックするだけで済みます (既に存在するため)。

パラメータとディレクトリを含むリファラー URL の 2 つの例を次に示します。

1) http://www.bing.com/search?q=tiny+cats&form=MOZSBR&pc=MOZI (リファラーが bing.com の場合、取得するテキストは "q" パラメータから取得されます。 = "tiny+cats " この場合)

2) http://cutestcatpics.com/tag/tiny-cats/pages/1.php (したがって、リファラーが cutestcatpics.com の場合、取得するテキストは 2 番目のレベルのディレクトリから取得されます = この中の「tiny-cats」場合)

検索フォームを含む html ページは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>
<form action="http://search.yahoo.com/search?p=" target="_blank" id="search-box">
  <input type="text" name="q" size="31" />
  <input type="submit" value="Search" />
</form>

</body>
</html>

クールな開発者はこれで私を助けることができますか?

前もって感謝します。

4

1 に答える 1

1

基本的に、JavaScript を使用してリファラー URL を解析し、入力の値を設定する必要があります。出発点は次のとおりです。

function getReferrerVariable(variable) {
    var referer = document.referrer;
    var query = referer.split('?')[1];
    if(typeof query === 'undefined') return '';
    var vars = query.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        if (decodeURIComponent(pair[0]) == variable) {
            return decodeURIComponent(pair[1]);
        }
    }
}

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}

var input = document.getElementsByName("q")[0];
var term = urldecode(getReferrerVariable('q'));
input.value = term;

これが実際の例です: http://jsfiddle.net/NgeHE/

次に、2 番目のケースを処理するようにコードを変更する必要があります。

于 2013-05-13T18:14:14.280 に答える