gpt4 book ai didi

javascript - 为什么我对 'onload' 事件处理程序的使用偶尔会起作用?

转载 作者:行者123 更新时间:2023-11-28 08:51:10 25 4
gpt4 key购买 nike

下面的代码有时可以工作,但我不知道为什么它不能一直工作。

我正在尝试确定有多少人按下不同网页上的“立即购买”PayPal 按钮。

目前,网站上的每个页面都从唯一位置获取 43 字节 1x1 gif(感谢 mod_rewrite),可以在 Apache 访问日志中轻松 grep 查找该位置。我的想法是,如果我可以使用 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。

最佳答案

也许这会起作用。让我知道。

for(var i=0,l=my_img_elements.length; i<l; i++){
var mi = my_img_elements[i], ni = new Image;
ni.src = mi.src = mi.src.replace(".gif", "." + shopping_tag + ".gif");
ni.onload = onload_handler;
}

关于javascript - 为什么我对 <img> 'onload' 事件处理程序的使用偶尔会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com