2013-05-13 3 views
0

정확한 문제는 다음과 같습니다. 검색 양식이있는 HTML 페이지가 있으며 특정 리퍼러 URL의 특정 부분을 가져 와서 검색 양식에 미리 채워야합니다.특정 리퍼러 URL의 특정 텍스트를 검색 양식에 미리 채우는 방법은 무엇입니까?

사용자가 수동으로 검색어를 입력하지 않고 검색을 클릭하기 만하면됩니다 (이미있는 것처럼).

다음은이 예제 매개 변수를 참조 자 URL 및 디렉토리

1) http://www.bing.com/search?q=tiny+cats&form=MOZSBR&pc=MOZI (그래서 리퍼러가 bing.com 경우, 얻을 수있는 텍스트가 "Q"PARAM에서입니다. = "작은 + 고양이"입니다)이 경우

2) http://cutestcatpics.com/tag/tiny-cats/pages/1.php (레퍼러가 cutestcatpics.com 인 경우에 따라서 얻을 수있는 텍스트가 2 일부터입니다. 레벨 디렉토리이 경우 = "작은-고양이") 여기

가있다 검색 양식이있는 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

기본적으로 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/

이제 두 번째 경우를 처리하는 코드를 수정해야합니다.

+0

남자, 너 락. 그것은 부분적으로 작동합니다. – user1289292