javascript - IE 中的 jQuery ATTR funk

标签 javascript jquery internet-explorer google-analytics onclick

我正在使用 $(document).ready() 动态创建 javascript 并将其附加到我页面上链接的 onclick 事件

我的 onclick javascript 用于生成我传递给 Google Analytics 的事件函数,以跟踪我页面上的事件,例如点击横幅和下载 PDF。我正在从除 IE 之外的所有浏览器中获取这些事件的 Google Analytics 统计信息。所以,我在 IE 中的代码有问题(我在我的页面上搜索并搜索了错误,没有)。

通常我只会做 $("a").click 之类的事情...做一些事情...但无论出于何种原因,我可以让 Google Analytics 事件跟踪工作的唯一方法是将跟踪事件直接在我的链接上运行。因此,我使用以下代码在页面加载后将跟踪事件函数注入(inject)到链接的 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 函数来调出生成的源代码,假设它们有效,那么我的代码不会将跟踪事件函数注入(inject)到我的 IE 链接的 onclick 中。我在 Firefox 的 View 生成源中的 onclick 中看到了跟踪事件函数。

作为另一个测试,您可以看到我在跟踪事件函数周围添加了警报。在 FF 中,两个警报都会触发,在 IE 中,两个警报都不会触发。

还有一条信息。我的 Google Analytics 没有记录任何 IE 浏览器的事件。据我所知,我的问题并非特定于某个版本的 IE。

我如何判断我的动态 javascript 是否进入了 IE 的 onclick,然后我该怎么做才能将它进入 IE 的 onclick?

更新 为了简化问题并突出答案的方向,我删除了 Google Analytics 事件功能。现在,我所做的就是将 alert() 注入(inject) onlick。 IE 甚至不会触发 alert()。我尝试了以下...

// 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 没有被注入(inject)到 IE 中的 onclick 中。

在 IE 中查看生成源的最可靠方法是什么?

如果我可以确认我的代码没有被注入(inject)到链接的 onclick 属性中,那么我至少可以回答为什么 Google Analytics 没有跟踪 IE 的事件。那是因为我注入(inject)的代码在 IE 中不存在。

最佳答案

您不应添加“onclick”属性,而应使用 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');
    });
}

类似上面的内容,抱歉写得这么快,所以可能有错字。

关于javascript - IE 中的 jQuery ATTR funk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8745628/

相关文章:

javascript - jquery 101 表单提交不工作

html - IE10 - 打印出的幻影表格边框

javascript - 使用javascript对具有相同属性的div进行分组

javascript - 使用Guards(Roles、JWT)获取用户数据

javascript - Handlebars 是否需要 jQuery

javascript - 在 Electron 应用程序之外监听键盘事件和鼠标移动

jquery - 使用 jquery 淡出隐藏图像

css - CSS 中的 margin-top 属性

javascript - IE 中的 ExtJS 组合框问题

javascript - 根据网页 javascript 的内容从字典中查找单词的最佳实践