Javascript Event.Target 锚点问题
Javascript Event.Target Issue with Anchors
这个 link 管理器有一个缺陷,它使用 event.target 来搜索锚标签,但是它会跳过包含 IMG、SPAN、DIV 等的锚标签。我不能我不知道如何让它包含锚标记包装的任何对象。有人有想法吗?
这是我演示问题的演示页面:http://tinyurl.com/nxc7bpx
这是原来的插件:
/* Exit Link Manager v0.5 */
function getLinks() {
for (var i = 0; i < document.links.length; i++) {
lnk = document.links[i];
if (lnk.addEventListener) {
lnk.addEventListener('click', sendExitConversion, false)
} else if (lnk.attachEvent) {
lnk.attachEvent('onclick', sendExitConversion)
}
}
}
function setBodyOnload() {
if (window.addEventListener) {
window.addEventListener('load', getLinks, false)
} else if (window.attachEvent) {
window.attachEvent('onload', getLinks)
}
}
setBodyOnload();
function sendExitConversion(event) {
var obj;
event = event ? event : window.event;
var s = s_gi(s_account);
if (event.target) {
obj = event.target
} else if (event.srcElement) {
obj = event.srcElement
}
if (obj.href) {
var exitLinks = s.linkInternalFilters;
var exitArray = exitLinks.split(',');
if (s.trackExternalLinks == false) {
isExitLink = true;
for (i = 0; i < exitArray.length; i++) {
if (obj.href.toLowerCase().indexOf(exitArray[i].toLowerCase()) > -1) {
isExitLink = false
}
}
exitURLStart = obj.href.substring(obj.href.indexOf('//') + 2, obj.href.length);
if (exitURLStart.indexOf('/') > -1) {
exitURLEnd = exitURLStart.indexOf('/')
} else {
exitURLEnd = exitURLStart.length
}
var exitDomain = exitURLStart.substring(0, exitURLEnd);
if (isExitLink) {
/* SET YOUR EXIT LINK VARIABLES AND EVENTS HERE */
s.linkTrackVars = "";
s.linkTrackEvents = "";
s.events = "";
s.tl(this, 'e', exitDomain);
}
}
}
}
因此,当我将 obj = event.target
更改为 obj = currentTarget
时,我现在可以检索 link 数据。
这个 link 管理器有一个缺陷,它使用 event.target 来搜索锚标签,但是它会跳过包含 IMG、SPAN、DIV 等的锚标签。我不能我不知道如何让它包含锚标记包装的任何对象。有人有想法吗?
这是我演示问题的演示页面:http://tinyurl.com/nxc7bpx
这是原来的插件:
/* Exit Link Manager v0.5 */
function getLinks() {
for (var i = 0; i < document.links.length; i++) {
lnk = document.links[i];
if (lnk.addEventListener) {
lnk.addEventListener('click', sendExitConversion, false)
} else if (lnk.attachEvent) {
lnk.attachEvent('onclick', sendExitConversion)
}
}
}
function setBodyOnload() {
if (window.addEventListener) {
window.addEventListener('load', getLinks, false)
} else if (window.attachEvent) {
window.attachEvent('onload', getLinks)
}
}
setBodyOnload();
function sendExitConversion(event) {
var obj;
event = event ? event : window.event;
var s = s_gi(s_account);
if (event.target) {
obj = event.target
} else if (event.srcElement) {
obj = event.srcElement
}
if (obj.href) {
var exitLinks = s.linkInternalFilters;
var exitArray = exitLinks.split(',');
if (s.trackExternalLinks == false) {
isExitLink = true;
for (i = 0; i < exitArray.length; i++) {
if (obj.href.toLowerCase().indexOf(exitArray[i].toLowerCase()) > -1) {
isExitLink = false
}
}
exitURLStart = obj.href.substring(obj.href.indexOf('//') + 2, obj.href.length);
if (exitURLStart.indexOf('/') > -1) {
exitURLEnd = exitURLStart.indexOf('/')
} else {
exitURLEnd = exitURLStart.length
}
var exitDomain = exitURLStart.substring(0, exitURLEnd);
if (isExitLink) {
/* SET YOUR EXIT LINK VARIABLES AND EVENTS HERE */
s.linkTrackVars = "";
s.linkTrackEvents = "";
s.events = "";
s.tl(this, 'e', exitDomain);
}
}
}
}
因此,当我将 obj = event.target
更改为 obj = currentTarget
时,我现在可以检索 link 数据。