IE_javascript 기술의 JS 점프에서 리퍼러 누락 문제에 대한 2가지 솔루션

WBOY
풀어 주다: 2016-05-16 16:41:42
원래의
1450명이 탐색했습니다.

저는 다양한 페이지 이동 방법에서 리퍼러 손실 상황을 컴파일한 적이 있는데, IE에서는 location.href = "a.html"과 같은 방법을 사용하여 페이지로 이동한다고 언급했습니다. 대상 페이지의 document.referrer는 비어 있습니다. 이것은 IE의 버그일 것입니다.

대부분의 경우 이 문제는 문제를 일으키지 않지만 때로는 JavaScript를 사용하여 점프하고 동시에 다음 페이지의 document.refer를 수집해야 하는 경우 다른 방법을 생각해야 합니다.

양식 GET 방식

가장 먼저 떠오르는 것은 Form 양식을 사용하고 JS로 GET 요청을 시작하는 것입니다. 코드는 다음과 유사합니다.

코드 복사 코드는 다음과 같습니다.

함수 goToPage(url) {
만약 (isIE) {
// IE 브라우저
        var frm = document.createElement("form");
frm.action = url;
frm.method = "GET";
           document.body.appendChild(frm);
frm.submit();
} 그 밖의 {
//IE가 아님
location.href = url;
}
}

이 방법은 예상대로 작동하며 대상 페이지의 document.referrer는 정상적으로 이전 페이지를 가리킬 수 있습니다.

요소 시뮬레이션 클릭 방법

온라인으로 검색한 후 Situ Zhengmei의 블로그에 기록된 이 문제에 대한 또 다른 해결책을 찾았습니다.

코드 복사 코드는 다음과 같습니다.

//모든 브라우저에 대해 정의
함수 goto(url) {
Location.href = URL;
}

//IE용 재정의
if (isIE) {
함수 goto(url) {
      varreferLink = document.createElement('a');
        referLink.href = url;
            document.body.appendChild(referLink);
        referLink.click();
}
}

원칙은 매우 간단합니다. 먼저 A 요소를 만들고 해당 요소의 href 속성을 대상 링크로 지정한 다음 JS를 사용하여 클릭 이벤트를 트리거합니다. 테스트 후, 대상 페이지에서 document.referrer를 정상적으로 얻을 수 있습니다.

이 메서드의 코드는 형식을 사용하는 위의 솔루션보다 짧고 더 좋습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿