저는 다양한 페이지 이동 방법에서 리퍼러 손실 상황을 컴파일한 적이 있는데, IE에서는 location.href = "a.html"과 같은 방법을 사용하여 페이지로 이동한다고 언급했습니다. 대상 페이지의 document.referrer는 비어 있습니다. 이것은 IE의 버그일 것입니다.
대부분의 경우 이 문제는 문제를 일으키지 않지만 때로는 JavaScript를 사용하여 점프하고 동시에 다음 페이지의 document.refer를 수집해야 하는 경우 다른 방법을 생각해야 합니다.
양식 GET 방식
가장 먼저 떠오르는 것은 Form 양식을 사용하고 JS로 GET 요청을 시작하는 것입니다. 코드는 다음과 유사합니다.
이 방법은 예상대로 작동하며 대상 페이지의 document.referrer는 정상적으로 이전 페이지를 가리킬 수 있습니다.
요소 시뮬레이션 클릭 방법
온라인으로 검색한 후 Situ Zhengmei의 블로그에 기록된 이 문제에 대한 또 다른 해결책을 찾았습니다.
//IE용 재정의
if (isIE) {
함수 goto(url) {
varreferLink = document.createElement('a');
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
}
원칙은 매우 간단합니다. 먼저 A 요소를 만들고 해당 요소의 href 속성을 대상 링크로 지정한 다음 JS를 사용하여 클릭 이벤트를 트리거합니다. 테스트 후, 대상 페이지에서 document.referrer를 정상적으로 얻을 수 있습니다.
이 메서드의 코드는 형식을 사용하는 위의 솔루션보다 짧고 더 좋습니다.