我发现在JavaScript的代码,我想知道,如果这是一种黑客攻击,或只是一个错误:这是什么JavaScript黑客?
var img = new Image();
img.src = myHttpSrc;
img.onload = function() {
img.onload = null;
};
我发现在JavaScript的代码,我想知道,如果这是一种黑客攻击,或只是一个错误:这是什么JavaScript黑客?
var img = new Image();
img.src = myHttpSrc;
img.onload = function() {
img.onload = null;
};
代码似乎从myHttpSrc
加载图像。有一个onload
的事件处理程序,它将在加载时触发。一旦加载完成,处理程序也会自行删除。
这不是破解,但由于onload
处理程序除了自行删除之外没有其他任何操作,所以看起来多余。
只是为了扩大一点Kami的答案,这可能是必要的一个可能的情况是,也许在代码中的其他地方,他们检查img.onload是否为空 - 也许作为一种方式来检查是否或不是没有使用布尔值加载图像。
这听起来很不理想,有点古怪,但嘿,这是可能的。
这就是我的观点:在没有给出这个代码的上下文的情况下,没有人能够知道这是否是黑客或错误。
如果你需要需要才能知道答案:问问编写代码的人。
它似乎很多余,但我不知道我们怎么能知道没有任何上下文... – Jace 2013-03-13 10:36:14
那么,至少,它有一个竞争条件。 (是的,真的。)如果图像处于缓存中,则在下一行代码运行之前,浏览器可能会在设置“src”后立即触发'load'事件。 (因为尽管浏览器中的JavaScript是单线程的 - 除非你使用web worker - 浏览器本身*不是*。它可以高兴地触发事件,看到没有挂钩的处理程序,所以不会将它们排队执行当接下来的JavaScript线程成为可用时)。 – 2013-03-13 10:37:01
更多的上下文:这是一个绑定到链接的“onclick”事件的函数。该函数总是'返回true'。 – KwiwaA 2013-03-13 10:44:57