在img src中填充随机数

时间:2014-12-02 15:23:35

标签: javascript html image pixel tagging

我被要求在下面的第三方像素中插入CACHEBUSTER(随机数):

<img src='http://yourdomain.com?dfew&chpcm=&chpsg=&chpcr=&chpck=&rand=INSERT_CACHEBUSTER&chpth=' width='1' height='1' border='0'>

随机数应该填充在rand URL参数中,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

您可以使用时间戳替换'INSERT_CACHEBUSTER',如下所示:

var img = document.querySelector('img[src*="INSERT_CACHEBUSTER"]')
img.src = img.src.replace('INSERT_CACHEBUSTER', (new Date()).getTime())

时间戳比一个随机数更好,因为它每毫秒递增一次,所以实际上没有办法重复它,如果你真的想要随机的话,那就是重复的情况:

img.src = img.src.replace('INSERT_CACHEBUSTER', Math.random())
编辑:两种解决方案都可以两次点击跟踪服务器:一次使用占位符字符串,然后再修改src。您可以通过使用其他属性来避免它,例如data-src

// HTML
<img data-src='http://blahblah&rand=INSERT_CACHEBUSTER' width='1' height='1' border='0'>

// JS
var img = document.querySelector('img[data-src*="INSERT_CACHEBUSTER"]')
img.src = img.getAttribute('data-src').replace('INSERT_CACHEBUSTER', (new Date()).getTime());

或在纯JS中生成跟踪图像

var img = new Image();
img.width = 1;
img.height = 1;
img.src = 'http://h.nexac.com/e/a-858/s-1486/c-705/g-2423.xgi?pkey=xbue89gtzpg16&chpcm=&chpsg=&chpcr=&chpck=&rand=' + (new Date()).getTime() +'&chpth=';
document.body.appendChild(img);

答案 1 :(得分:0)

var image = document.querySelector('#pixel-img');
image.src = 'http://h.nexac.com/e/a-858/s-1486/c-705/g-2423.xgi?pkey=xbue89gtzpg16&chpcm=&chpsg=&chpcr=&chpck=&rand=' + Math.round(Math.random(99999) * 100000) + '&chpth=';
<img id="pixel-img" src='http://h.nexac.com/e/a-858/s-1486/c-705/g-2423.xgi?pkey=xbue89gtzpg16&chpcm=&chpsg=&chpcr=&chpck=&rand=INSERT_CACHEBUSTER&chpth=' width='1' height='1' border='0'>

答案 2 :(得分:0)

您也可以使用正则表达式替换值。

var src = $("img").prop( "src" );
src = src.replace( /(.+)(rand=)(.+)(&)(.+)/, "$1rand="+rndVal+"&$5");
$("img").prop( "src", src );

当您使用正则表达式时,( )之间的每个字都可以使用$i访问,其中i是第i个位置。

http://codepen.io/anon/pen/MYarjN