Target =“_ blank”을 사용하는 이유는 JavaScript가 실패하게됩니까?
-
06-07-2019 - |
문제
Target = "_ blank"속성을 사용하여 새 창에서 열리는 링크가 많이 있습니다. Google 웹 로그 분석 목표 추적을 이러한 링크 클릭에 첨부하고 싶습니다.
이렇게하려면 OnClick = "pagetracker._trackPageView ( '/event/Outgeing')"링크에 첨부를 첨부하려고 시도했습니다.
그러나 Target = "_ blank"속성과의 링크의 경우 JavaScript OnClick 이벤트가 건너 뜁니다. 따라서 목표는 기록되지 않습니다. 다시 말해,이 링크는 목표를 성공적으로 기록합니다.
<a href="http://www.yahoo.com" onclick="pageTracker._trackPageview('/event/outgoing')">Click me</a>
그러나 이것은 다음과 같습니다.
<a href="http://www.yahoo.com" target="_blank" onclick="pageTracker._trackPageview('/event/outgoing')">Click me</a>
왜 이것이 왜 발생했는지 아는 사람이 있습니까? 쉬운 해결책이 없다고 가정하면 문제를 해결하기 위해 JavaScript를 사용해야한다고 가정합니다. 다음 코드는 목표를 성공적으로 기록하지만 (링크를 열지 않음) :
function attach_goal_tracking() {
var links = document.getElementsByClassName("buyTicketsLink");
for(var i=0; i<links.length; i++) {
links[i].onclick = record_goal;
}
}
function record_goal(e) {
e.stop();
pageTracker._trackPageview('/event/outgoing');
}
그러나 레코드 _goal 함수에 추가하여 링크를 열면 ...
function record_goal(e) {
e.stop();
pageTracker._trackPageview('/event/outgoing');
var newWindow = window.open(this.getAttribute('href'), '_blank');
newWindow.focus();
}
... 그런 다음 목표를 추적하지 못합니다.
누구든지 이것이 왜이 문제를 해결하기 위해 무엇을 해야하는지 말해 줄 수 있습니까? 참고로 JavaScript 용 프로토 타입을 사용하고 있습니다.
해결책
팝업 차단제 (Googlebar라고 생각하는 것)에 문제가있을 수 있습니다. 창을 열지 못하고 ( onclick
) 방지 onclick
실행에서 코드. 예를 들어 참조하십시오 이것 그리고 이것 다른 사람들이 가진 비슷한 소리의 문제.
또는 클릭 핸들러 코드에 오류가 발생하여 나머지 코드가 완료되는 것을 방지하는 오류가 발생할 수 있습니다. 귀하의 질문에 대한 내 의견을보십시오. e.stop()
IE에서 실패 할 수 있습니다.
그러나 당신의 가설은 거짓입니다. target="_blank"
그리고 onclick="..."
함께 일하면서 잘 작동합니다.
적절한 테스트 케이스 : http://jsbin.com/anahe (추가하다 /edit
코드를 편집하려면 URL에). 팝업 차단기를 끄야 할 수도 있습니다.:
<!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" xml:lang="en" lang="en">
<head>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script>var clickCount= 0;</script>
</head>
<body>
<a href="http://www.google.com" target="_blank" onclick="document.getElementById('dbg').innerHTML = ++clickCount">
open new
</a>
<div id="dbg"></div>
</body>
</html>
링크를 클릭하면 새 창이 엽니 다 그리고 링크 된 횟수로 DIV를 업데이트합니다. IE6, IE7, FF2, FF3.5, Chrome 2, Chrome 3, Opera 9에서 이것을 테스트했습니다.
다른 팁
Victor는 E.Stop ()가 비정상적이며 다음 코드가 새 탭을 성공적으로 엽니다는 것을 확인할 수 있으며 이전 탭에서 비동기 적으로 경고 (결과적으로 초점을 맞추는).
<a href="" target="_blank">reload</a>
<script>
var as = document.getElementsByTagName('a');
for (var i = 0; i < as.length; i++) {
var a = as[i];
a.onclick = function(e) {
setTimeout(function() {
alert('hi hi');
}, 1000);
}
}
</script>
다음으로 가장 좋은 점은 링크 추적 페이지를 가지고 해당 페이지를 통해 모든 외부 링크를 라우팅하는 것입니다.