我正在使用$(document).ready()
动态创建javascript并将其附加到我页面上链接的onclick事件中我的onclick javascript用于生成我传递给Google Analytics的事件功能,以跟踪我页面上的事件,例如横幅广告和下载的PDF。我在Google Analytics中获取来自除IE之外的所有浏览器的这些事件的统计信息。所以,我在IE中的代码有问题(我在我的页面上搜索并搜索了错误,没有)。
通常情况下,我会做类似$(“a”)的事情。点击......执行操作...但无论出于何种原因,我可以让Google Analytics事件跟踪工作的唯一方法就是设置跟踪事件直接在我的链接上运行。因此,我正在使用以下代码在页面加载后将跟踪事件功能注入链接的onclick ....
// Tracks favorites on the home page.
$("._gatHomePageFavorites").each
(
function(index)
{
var description = "Content ID: " + getParameterNamedID($(this).attr("href")) + " - " + $(this).children().first().attr("alt");
$(this).attr("onclick","alert('1');_gaq.push(['_trackEvent', 'Favorites - Home Page', 'Icon Click','" + _gatCleanString(description) + "']);alert('2');");
}
);
我认为我的问题是IE不会将我的代码放在onclick上。但我不知道在IE中查看生成的源的好方法。我已经在地址栏中尝试了几个javascript函数来调出生成的源代码,假设它们正常工作,那么我的代码就不会将跟踪事件函数注入到我的链接onclick for IE中。我在Firefox的视图生成源中看到onclick中的跟踪事件功能。
作为另一项测试,您可以看到我在跟踪事件功能周围添加了警报。在FF中,两个警报都触发,在IE中既没有警报触发器。
还有一条信息。我的Google Analytics不会记录任何IE浏览器的事件。据我所知,我的问题不是针对一个版本的IE。
我如何知道我的动态javascript是否进入了IE的onclick,然后我该怎么做才能将它带入IE的onclick?
更新 为简化问题并重点关注答案的方向,我删除了Google Analytics事件功能。现在,我正在做的就是在onlick中注入alert()。 IE甚至不会触发警报()。我试过以下......
// Tracks favorites on the home page.
$("._gatHomePageFavorites").each
(
function(index)
{
$(this).attr("onclick","alert('1')");
}
);
和
// Tracks favorites on the home page.
$("._gatHomePageFavorites").each
(
function(index)
{
$(this).attr("onclick","setTimeout(\"alert('1')\", 1000);return false");
}
);
所以我仍然倾向于我的javascript没有注入IE中的onclick。
在IE中查看生成的源的最可靠方法是什么?
如果我可以确认我的代码没有被注入链接的onclick属性,那么我至少可以回答为什么Google Analytics不跟踪IE的事件。这是因为我注入的代码在IE中不存在。
答案 0 :(得分:4)
你不应该添加'onclick'attr,而是使用jQuery .click()
事件来使用它。
function(index){
var description = "Content ID: " + getParameterNamedID($(this).attr("href")) + " - " + $(this).children().first().attr("alt");
$(this).click(function() {
alert('1');
_gaq.push(['_trackEvent', 'Favorites - Home Page', 'Icon Click', _gatCleanString(description)]);
alert('2');
});
}
上面的内容,抱歉写了这么快,所以可能会有拼写错误。
答案 1 :(得分:0)
很小的机会,但是如果你的页面上有任何VBScript,那么你应该在" javascript:"
之前添加你的onclick字符串答案 2 :(得分:0)
你可以使用历史悠久的DOM0 onclick
属性,尽管jQuery的click()
方法无法正常工作。
$("._gatHomePageFavorites").each
(
function(index)
{
var $this = $(this);
var description = "Content ID: "
+ getParameterNamedID($this.attr("href")) + " - "
+ $this.children().first().attr("alt");
this.onclick = function() {
alert('1');
_gaq.push(['_trackEvent', 'Favorites - Home Page', 'Icon Click',
_gatCleanString(description)]);
alert('2');
};
}
);
jQuery的attr()
方法通常没用,但这是一个完全不同的咆哮。
答案 3 :(得分:0)
要了解跟踪链接的一点是,如果浏览器在提取跟踪像素之前离开页面,则可能无法记录事件,具体取决于浏览器,计算机和&网络速度。我对以下内容运气不错(从@Tim Down's
代码修改):
$("._gatHomePageFavorites").each
(
function(index)
{
var $this = $(this);
var description = "Content ID: "
+ getParameterNamedID($this.attr("href")) + " - "
+ $this.children().first().attr("alt");
$this.click(function(e) {
alert('1');
_gaq.push(['_trackEvent', 'Favorites - Home Page', 'Icon Click',
_gatCleanString(description)]);
if ($this.attr('target') != '_blank') {
e.preventDefault();
setTimeout('document.location = "' + $this.attr('href') + '"', 150);
}
});
}
);
基本上,如果链接没有在新窗口中打开,请等待并自己关注。
答案 4 :(得分:0)
事实证明,我的问题与Google Analytics或其跟踪事件无关。经过大量的测试,我终于确定在IE中,jQuery的$()。attr()无效。
奇怪的是它没有破坏或抛出错误。 IE只是以某种方式忽略它,并且不会将我的动态javascript添加到锚标记的onclick参数。
解决方案...
显而易见的是像所有人建议的那样绑定事件。如果你可以使用$()。click()那么我同意,永远使用它。永远不要使用$()。attr(“onclick”,“做某事”);
但是我的项目中的其他情况使我无法使用$()。click()。除非事件跟踪功能内嵌在锚标记上,否则我无法使用事件跟踪功能将统计数据导入Google Analytics。
去了老学校......
$(".obj").each
(
function (index) {
this.setAttribute("onclick", "alert('It is Working');");
}
);
感谢大家的帮助。