如何将特定引荐网址中的特定文本预先填充到搜索表单中?

时间:2013-05-13 16:37:11

标签: html referrer

这就是问题所在:我们有一个带有搜索表单的HTML页面,需要获取特定引用URL的特定部分,并将它们预先填充到搜索表单中。

这样用户只需点击搜索而无需手动输入查询(因为它已经存在)。

以下是2个带参数和目录的引用网址

1)http://www.bing.com/search?q=tiny+cats&form=MOZSBR&pc=MOZI (所以如果引用者是bing.com,那么要获取的文本来自“q”param。=“tiny + cats”在这种情况下)

2)http://cutestcatpics.com/tag/tiny-cats/pages/1.php (所以如果引用者是cutestcatpics.com,那么获取的文本来自第二级。在这种情况下,目录=“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>

任何酷的开发都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

基本上,您需要使用JavaScript来解析引用网址并设置输入值。这是一个起点:

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/

现在您需要修改代码来处理第二种情况。