下面的代码工作......有时,但我不知道为什么它不能一直工作。
我试图确定有多少人按下了不同网页上的“立即购买”PayPal 按钮。
目前,站点上的每个页面都从唯一的位置(感谢mod_rewrite
)获取一个 43 字节的 1x1 gif,这在 Apache 访问日志中很容易被 grep'able。我的想法是,如果我可以使用 javascript 更改该图像的 URL,我可以跟踪访问日志中的点击,同时仍然让浏览器的前进和后退按钮正常工作。
下面的代码 ( Override_Form_OnClick()
) 在页面上查找一个表单(只有一个)并将一个处理程序 ( my_shopping()
) 附加到表单的onclick
处理程序。
然后my_shopping()
处理程序更新名为的图像资源my_stats
(同样,只有一个),将表单元素的submit
函数附加到图像的onload
处理程序,然后返回 false 以便在新图像加载之前不会提交表单。
这就是目的,但它并不总是将新图像记录在访问日志中。当然,我只使用开发工具在 Chrome 中对其进行了测试,所以这可能是其他浏览器的问题?
<script>
function my_shopping(onload_handler, shopping_tag) {
'use strict';
var my_img_elements = document.getElementsByName('my_stats'),
my_img_url,
i,
len;
len = my_img_elements.length;
if (len > 1) {
alert("Multiple my_stats elemetns on page: only expected 1.");
}
for (i = 0; i < len; i += 1) {
my_img_url = my_img_elements[i].src;
my_img_url = my_img_url.replace(".gif", "." + shopping_tag + ".gif");
my_img_elements[i].onload = onload_handler;
my_img_elements[i].src = my_img_url;
}
return false;
}
function Override_Form_OnClick() {
'use strict';
var elements = document.getElementsByTagName('form'),
element,
i,
len;
len = elements.length;
if (len > 1) {
alert("Multiple 'form' elements on page: only expected 1.");
}
for (i = 0; i < len; i += 1) {
element = elements[i];
element.onclick = function () { my_shopping(element.submit, "shopping.PayPal") };
}
return true;
}
Override_Form_OnClick();
</script>
该网站的政策强烈倾向于仅使用 javascript。