0

通过联盟营销和 PHP,我知道如何制作这样的跟踪像素:

<img alt="" src="http://example.com/pixel.php?tracking=43233" />

然后,在 pixel.php 我做类似的事情:

<?php

$sTrack = @ $_GET['tracking'];
$sTrack = urldecode($sTrack);
$sTrack = strip_tags($sTrack);
$sTrack = trim($sTrack);
// do something with sTrack here
header('Content-type: image/gif');
readfile('images/invisible.gif');

麻烦的是,在这个报价页面上,我收到 cname 和 cemail 作为 URL 上的查询参数,而客户托管的东西不支持 PHP,但允许我插入 Javascript,我不能在此使用 jQuery案子。相反,我需要使用 100% 纯 Javascript 来执行此操作。所以,我无法读取 $_GET 来获取 cname 和 cemail。

我知道 location.search 会给我这些参数。我只需要如何更改 IMG 标签,以便像在加载事件中一样,我可以在最后传递 location.search。我需要它能够在 IE7 及更高版本以及 Opera、Safari 和 Chrome 之后的所有浏览器上工作。

4

2 回答 2

1

使用 Javascript 设置图像源。

<body onload="document.getElementById('tracking_pixel').src='http://example.com/pixel.php'+location.search;">
    <img id="tracking_pixel" src="" />
</body>

编辑:

是的,您可以通过将它放在 img 的 onload 中来缩短它。您甚至可以删除 id 和this关键字。但是,您不能让初始 src 为空,事实上,它必须是有效的图像才能触发 onload 事件。这样做的问题是您会产生通过网络请求的成本。

这是我可以召集的最短时间,而不是重复我使用的 url,+=但这意味着必须清除 onload 处理程序。

<body>
    <img src="http://example.com/pixel.php" onload="onload=''; src+=location.search;" />
</body>

或者,您可以使用数据 URI。不幸的是,只有 1 个像素的数据 URI 相当长。

<body>
    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR42mNgAAIAAAUAAen63NgAAAAASUVORK5CYII=" onload="src='http://example.com/pixel.php'+location.search;" />
</body>
于 2012-02-02T20:33:50.527 回答
1

您可以只使用http://example.com/pixel.php作为 img src,然后检查该 PHP 脚本中的引用。

于 2012-02-03T03:21:34.727 回答