Javascript 跟踪按钮单击事件

Javascript 跟踪按钮单击事件,javascript,tracking,Javascript,Tracking,我有一个脚本,当链接位于 脚本将跟踪标记或图像中的html 我需要的是它跟踪一个按钮,如下图所示 下面是我想我需要修改的代码: function clicktracker(e) { var ie = navigator.appName == "Microsoft Internet Explorer"; var src = ie ? window.event.srcElement : e.target; var tag = (src.tagName.toLowerCase() != "

我有一个脚本,当链接位于

脚本将跟踪标记或图像中的html

我需要的是它跟踪一个按钮,如下图所示

下面是我想我需要修改的代码:

    function clicktracker(e)
{
var ie  = navigator.appName == "Microsoft Internet Explorer";
var src = ie ? window.event.srcElement : e.target;
var tag =  (src.tagName.toLowerCase() != "a") ? src.parentNode : src;

if (!tag || tag.tagName.toLowerCase() != "a") return;

domain    = clicktracker_domain   (tag.href);
extension = clicktracker_extension(tag.href);

if ( clicktracker_inarray(clicktracker_domains, domain) &&
    !clicktracker_inarray(clicktracker_extensions, extension)) return;

var url   = tag.href;
var title = '';

if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.innerHTML);
if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.title);
if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt(src.alt);
if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt("Image");
url   = escape(url  .substr(0, 150));
title = escape(title.substr(0, 150));

if (url && title) setTimeout("clicktracker_aux('"+url+"', '"+title+"')", 10);
return;
}
这是我要追踪的按钮

<button type="button" title="title" style="background:#cda85c;" class="button btn-cart" onclick="window.open('http://www.example.com')"><span><span><?php echo $this->__('Buy Now') ?></span></span></button>

以下是完整的脚本:

function clicktracker_inarray (arr, val)
{
for (var i in arr) if (arr[i] == val) return true;
return false;
}

// ***** clicktracker_innertxt *****

function clicktracker_innertxt(str)
{
str = str.replace(/<[^>]*>/g, ' ');
str = str.replace(  /&amp;/g, '&');
str = str.replace( /&nbsp;/g, ' ');
str = str.replace(   /^\s+/g,  '');
str = str.replace(   /\s+$/g,  '');
return str;
}


// ***** URL *******************************************************************

var clicktracker_re_scheme = "^\\w+://";
var clicktracker_re_folder = "((?:-|\\w|\\.)*)";
var clicktracker_re_domain = clicktracker_re_scheme+       clicktracker_re_folder;
var clicktracker_re_urlall = clicktracker_re_domain+"(?:/"+clicktracker_re_folder+')*';

// ***** clicktracker_domain *****

function clicktracker_domain(url)
{
var reg   = new RegExp(clicktracker_re_domain);
var match = reg.exec(url);
if (!match) return "";
match = match[match.length-1];
return match;
}

// ***** clicktracker_extension *****

function clicktracker_extension(url)
{
var reg   = new RegExp(clicktracker_re_urlall);
var match = reg.exec(url);
if (!match) return "";
match = match[match.length-1].split(".");
return (match.length >= 2) ? match[match.length-1] : "";
}


// ***** Track *****************************************************************

// ***** clicktracker_aux *****

function clicktracker_aux(url, title)
{
var img = new Image();
img.src = clicktracker_url+"?url="+url+"&title="+title+"&rand="+Math.random();
}

// ***** clicktracker *****

function clicktracker(e)
{
var ie  = navigator.appName == "Microsoft Internet Explorer";
var src = ie ? window.event.srcElement : e.target;
var tag =  (src.tagName.toLowerCase() != "a") ? src.parentNode : src;

if (!tag || tag.tagName.toLowerCase() != "a") return;

domain    = clicktracker_domain   (tag.href);
extension = clicktracker_extension(tag.href);

if ( clicktracker_inarray(clicktracker_domains, domain) &&
    !clicktracker_inarray(clicktracker_extensions, extension)) return;

var url   = tag.href;
var title = '';

if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.innerHTML);
if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.title);
if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt(src.alt);
if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt("Image");
url   = escape(url  .substr(0, 150));
title = escape(title.substr(0, 150));

if (url && title) setTimeout("clicktracker_aux('"+url+"', '"+title+"')", 10);
return;
}


// ***** Attach Events *********************************************************

if (navigator.appName == "Microsoft Internet Explorer")
    document.attachEvent   ('onclick', clicktracker);
else document.addEventListener('click', clicktracker, false);
功能点击跟踪器\u inarray(arr,val)
{
如果(arr[i]==val)返回true,则为(arr中的var i);
返回false;
}
//******单击跟踪器*****
函数clicktracker_innertxt(str)
{
str=str.replace(/]*>/g',);
str=str.replace(/&;/g,,&');
str=str.replace(//g',);
str=str.replace(/^\s+/g',);
str=str.replace(/\s+$/g');
返回str;
}
//******网址*******************************************************************
var clicktracker_re_scheme=“^\\w+:/”;
var clicktracker_re_folder=“(((?:-|\\w|\\)*)”;
var clicktracker\u re\u domain=clicktracker\u re\u方案+clicktracker\u re\u文件夹;
var clicktracker_re_urlall=clicktracker_re_domain+”(?:/“+clicktracker_re_folder+”)*”;
//*****clicktracker\u域*****
功能clicktracker\u域(url)
{
var reg=新的RegExp(单击Tracker\u re\u域);
var match=reg.exec(url);
如果(!match)返回“”;
匹配=匹配[match.length-1];
复赛;
}
//*****clicktracker_扩展*****
功能clicktracker\u扩展(url)
{
var reg=新的RegExp(单击Tracker\u re\u urlall);
var match=reg.exec(url);
如果(!match)返回“”;
match=match[match.length-1]。拆分(“.”);
return(match.length>=2)?match[match.length-1]:“”;
}
//******轨道*****************************************************************
//******单击跟踪器辅助*****
功能clicktracker_辅助(url、标题)
{
var img=新图像();
img.src=clicktracker_url+“?url=“+url+”&title=“+title+”&rand=“+Math.random();
}
//******点击跟踪器*****
功能点击跟踪器(e)
{
var ie=navigator.appName==“Microsoft Internet Explorer”;
var src=ie?window.event.src元素:e.target;
变量标记=(src.tagName.toLowerCase()!=“a”)?src.parentNode:src;
如果(!tag | | tag.tagName.toLowerCase()!=“a”)返回;
domain=clicktracker\u domain(tag.href);
扩展名=clicktracker\u扩展名(tag.href);
如果(单击跟踪器\u inarray)(单击跟踪器\u域,域)&&
!clicktracker\u inarray(clicktracker\u扩展,扩展))返回;
var url=tag.href;
var title='';
if(!title)if(tag.tagName.toLowerCase()=“a”)title=clicktracker\u innertxt(tag.innerHTML);
if(!title)if(tag.tagName.toLowerCase()=“a”)title=clicktracker\u innertxt(tag.title);
if(!title)if(src.tagName.toLowerCase()=“img”)title=clicktracker\u innertxt(src.alt);
if(!title)if(src.tagName.toLowerCase()=“img”)title=clicktracker_innertxt(“图像”);
url=escape(url.substr(0150));
title=escape(title.substr(0150));
如果(url和标题)设置超时(“clicktracker_aux(““+url+”,“+title+”)”,10);
返回;
}
//******附加事件*********************************************************
如果(navigator.appName==“Microsoft Internet Explorer”)
document.attachEvent('onclick',clicktracker);
else文档。addEventListener('click',clicktracker,false);
编辑*****


然后,点击被存储在数据库中,并从php页面调用。

这些脚本中有很多内容,不清楚“跟踪”是什么意思,所以我只给出一个简短的版本:

document.addEventListener('click',function(e){
    var tag=e.target.tagName.toLowerCase();
    switch(tag){
        case "a":
            //use e.target to track this link event
            break;
        case "img":
            //use e.target to track this image event
            break;
        case "button":
            //use e.target to track this button event
            break;
    }
});
这将侦听页面上任何位置的单击,您可以使用
e.target
检查单击

编辑:


e
只是我给事件对象的名称,它由事件侦听器自动传递到函数中。此对象中始终存在的一个属性是
target
,它包含有关事件的一系列信息。如果您将
console.log(e)
放在上面事件监听器中的函数中,您可以在Chrome中将其拉出,点击
control+shift+i,
转到javascript控制台,并探索其中的内容。

1。请给我们一个精确的问题陈述(即某种实际问题)。2.请删除对回答您的问题不重要的代码部分,请参阅。我们不确定需要什么,并且我已声明希望脚本跟踪按钮标记。嘿,谢谢您的帮助。说到JS,我完全是个傻瓜,不知道什么是
e.target
,在哪里实现代码。再次感谢您的帮助,因为我花了很多时间尝试对其进行排序。
e
只是我给事件对象的名称,它由事件侦听器自动传递到函数中。此对象中始终存在的一个属性是
target
,它包含有关事件的一系列信息。如果您将
console.log(e)
放在上面事件侦听器中的函数中,您可以在Chrome中将其拉上来,点击
control+shift+i,
转到javascript控制台,探索其中的内容。如果我更改
if(!title)if(src.tagName.toLowerCase()=“img”)title=clicktracker\u innertxt(“Image”)
to
if(!title)if(src.tagName.toLowerCase()=“输入”)title=clicktracker\u innertxt(“图像”)我可以跟踪输入按钮,例如:
数据存储在我在其他地方查看的数据库中。