我被要求在下面的第三方像素中插入CACHEBUSTER(随机数):
<img src='http://yourdomain.com?dfew&chpcm=&chpsg=&chpcr=&chpck=&rand=INSERT_CACHEBUSTER&chpth=' width='1' height='1' border='0'>
随机数应该填充在rand URL参数中,但我不知道该怎么做。
答案 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个位置。