代码之家  ›  专栏  ›  技术社区  ›  alex

为什么谷歌分析要求一个GIF文件?

  •  14
  • alex  · 技术社区  · 15 年前

    为什么谷歌分析要求一个GIF文件?

    是因为GIF允许访问比单独使用JavaScript更多的数据吗?是要获取用户的IP地址吗?

    4 回复  |  直到 6 年前
        1
  •  15
  •   Majid Fouladpour    11 年前

    即使启用了javascript,分析也需要一个GIF文件。如果您查看图像的get参数,它会包含很多关于浏览器的信息。类似的东西 utmsr=1280x1024 (屏幕大小)。谷歌代码有一个 list of parameters .

    它使用图像请求发送有关浏览器的信息,而不使用 XMLHttpRequest .

    现在,为了真正回答最初的问题,谷歌可能会这样做 cross-domain XMLHttpRequest 限制。

        2
  •  16
  •   Chris    15 年前

    谷歌的javascript必须以某种方式将页面视图的详细信息传输到他们的服务器。Ajax不能跨域使用,因此提交信息的唯一方法是从Google服务器请求文件,并在查询字符串中传递必要的信息。为了方便起见,必须使用标准HTML标记请求某种形式的内容。要做到这一点而不影响页面本身,最简单的方法是加载一个1x1透明的GIF。请注意,对于Google脚本(以及其他脚本),这个图像实际上并没有添加到页面中。它只是通过一个javascript语句加载的

    var img1 = new Image();
    img1.src = 'http://path/to/file.gif?otherinfohere';
    

    这将加载图像而不将其添加到页面。还可以使用如下脚本标记加载信息:

    <script src="http://path/to/script.js?otherinfohere" type="text/javascript"><script>
    

    但是,用户更可能被javascript阻塞,因此更安全的途径是请求一个图像。至于为什么他们会使用GIF而不是JPG,GIF更安全,以防恶意浏览器将图像添加到页面中。透明的GIF不太可能对布局产生负面影响,因为1x1JPG会在页面上的某个位置留下一个1像素的点。

    编辑:要添加到我对阻止javascript的用户的评论中,可以将包含静态信息的GIF请求添加到noscript标记中,以允许基本跟踪,即使在禁用javascript的情况下也是如此。据我所知,GA不这么做,但其他一些Web分析提供商也这么做。

        3
  •  13
  •   Cosmin    6 年前

    http://www.perlmonks.org/?node_id=7974

    最小的透明gif是 43字节 .

    http://garethrees.org/2007/11/14/pngcrush/

    最小的透明PNG-24(旧浏览器也无法显示)是 67字节 .

    http://www.techsupportteam.org/forum/digital-imaging-photography/1892-worlds-smallest-valid-jpeg.html

    最小(不透明)的jpeg是 134字节 .

    数学很简单!规模越大=成本越高。

        4
  •  1
  •   Neil McGuigan    12 年前
    1. 您可以在不使用javascript的情况下使用utm.gif跟踪器(带有一些服务器帮助)

    2. 您可以在电子邮件中使用它(在发送电子邮件之前提供一些编程帮助)

    3. Urchin是在Ajax流行之前开发的(2005年)

    它与跨域无关。他们本可以使用JSONP来实现这一点。