Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中的jQuery ATTR funk_Javascript_Jquery_Internet Explorer_Google Analytics_Onclick - Fatal编程技术网

Javascript IE中的jQuery ATTR funk

Javascript IE中的jQuery ATTR funk,javascript,jquery,internet-explorer,google-analytics,onclick,Javascript,Jquery,Internet Explorer,Google Analytics,Onclick,我正在使用$(document.ready()动态创建javascript并将其附加到页面上链接的onclick事件 我的onclick javascript用于生成事件函数,我将这些函数传递给Google Analytics,以跟踪我页面上的事件,例如点击横幅和下载的PDF。除了IE,我在Google Analytics中从每一个浏览器获取这些事件的统计数据。因此,我在IE中的代码有问题(我在我的页面上搜索了一次又一次,没有错误) 通常我会做一些类似$(“a”)的事情。单击。。。做些事情。。。

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

我的onclick javascript用于生成事件函数,我将这些函数传递给Google Analytics,以跟踪我页面上的事件,例如点击横幅和下载的PDF。除了IE,我在Google Analytics中从每一个浏览器获取这些事件的统计数据。因此,我在IE中的代码有问题(我在我的页面上搜索了一次又一次,没有错误)

通常我会做一些类似$(“a”)的事情。单击。。。做些事情。。。但不管出于什么原因,我唯一能让谷歌分析事件跟踪工作的方法就是将跟踪事件功能直接放在我的链接上。因此,我使用以下代码在页面加载后将跟踪事件函数注入到链接的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函数来显示生成的源代码,假设它们可以工作,然后,我的代码没有将跟踪事件函数注入到IE链接的onclick中。我在Firefox视图生成的源代码的onclick中看到了跟踪事件函数

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

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

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

更新 为了简化问题并关注答案的方向,我删除了Google Analytics事件函数。现在,我所做的就是将alert()注入onlick。IE甚至不会触发警报()。我试过以下方法

// Tracks favorites on the home page.
    $("._gatHomePageFavorites").each
    (
        function(index)
        {
            $(this).attr("onclick","alert('1')");
        }
    );

所以我仍然倾向于我的javascript没有被注入到IE的onclick中

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


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

你不应该添加“onclick”属性,而应该使用jQuery事件


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

可能性很小,但是如果您的页面上有任何VBScript,那么您应该在onclick字符串前面加上“javascript:”

您可以使用由来已久的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()
方法通常没有用处,但这是一种完全不同的说法。

需要注意的是,如果浏览器在提取跟踪像素之前离开页面,则可能不会记录事件,具体取决于浏览器、计算机和网络速度。我在以下方面运气不错(根据蒂姆·唐恩的代码修改):


基本上,如果链接没有在新窗口中打开,请等待并亲自跟踪它。

结果表明,我的问题与谷歌分析或跟踪事件无关。经过大量测试,我最终确定在IE中,jQuery的$().attr()不起作用

奇怪的是,它没有中断或抛出错误。IE只是以某种方式忽略了它,并且不会将我的动态javascript添加到锚标记的onclick参数中

解决方案

  • 显而易见的一点是,要像每个人所建议的那样与事件紧密结合。如果你可以使用$().click(),那么我同意,永远使用它。永远不要使用$().attr(“onclick”,“do something”)

  • 但是,项目中的其他情况阻止我使用$()。单击()。我无法使用Google Analytics的事件跟踪功能将统计数据输入到Google Analytics中,除非事件跟踪功能内嵌在锚标签上

  • 去了老学校

    $(".obj").each
            (
                function (index) {
    
                    this.setAttribute("onclick", "alert('It is Working');");
    
                }
            );
    

    谢谢大家的帮助。

    尝试在文档之后和连接之前添加100毫秒超时。如果链接离开页面,单击()不获取统计信息可能会导致竞争状况。我考虑过这一点,但我认为如果我在onclick中添加了警报(),我就不必尝试这种延迟破解。如果在链接的onclick事件中有一个alert(),则应该触发alert(),而无需设置延迟。但是我很长时间以来一直在努力解决这个问题,所以我会试试。我认为不获取任何统计数据部分是一个好主意,但会产生误导。我的警报()甚至没有出现。因此,我不认为jQuery的att函数将我的代码放在IE中的链接上。至少我应该看到一个带有1的警报框。我添加了setTimeout。它没有帮助。从我的一个打字错误看,它不应该起作用,一些参考:亚当是正确的,我不能这样做,因为它以某种方式破坏了分析。当我把他们的跟踪事件功能直接放在链接上时,我会得到统计数据。当我在$(“a”).click()中放置相同的跟踪事件函数时,我没有得到任何统计信息。感谢链接,但正如我所提到的,我无法在绑定中添加跟踪事件函数,如$().click()或$().blur()。在我的初始测试中,除了两个链接外,页面上没有任何内容,一个链接的跟踪事件绑定为$()。click(),另一个链接的onlclick属性内联跟踪事件。绑定的一个没有被谷歌分析跟踪,内联的一个被跟踪。我不知道为什么。。。只是不知怎么的,它不是。没有VBScript,但这个预编的想法无论如何值得一试。我也会尝试一下。我添加了javascript:它没有帮助。我对attr()大喊大叫。我总是使用jQuery的click()。B
    $("._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');
                };
            }
        );
    
    $("._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);
                    }
                });
            }
        );
    
    $(".obj").each
            (
                function (index) {
    
                    this.setAttribute("onclick", "alert('It is Working');");
    
                }
            );