2013-03-13 93 views
0

我发现在JavaScript的代码,我想知道,如果这是一种黑客攻击,或只是一个错误:这是什么JavaScript黑客?

var img = new Image(); 
img.src = myHttpSrc; 
img.onload = function() { 
    img.onload = null; 
}; 
+1

它似乎很多余,但我不知道我们怎么能知道没有任何上下文... – Jace 2013-03-13 10:36:14

+3

那么,至少,它有一个竞争条件。 (是的,真的。)如果图像处于缓存中,则在下一行代码运行之前,浏览器可能会在设置“src”后立即触发'load'事件。 (因为尽管浏览器中的JavaScript是单线程的 - 除非你使用web worker - 浏览器本身*不是*。它可以高兴地触发事件,看到没有挂钩的处理程序,所以不会将它们排队执行当接下来的JavaScript线程成为可用时)。 – 2013-03-13 10:37:01

+0

更多的上下文:这是一个绑定到链接的“onclick”事件的函数。该函数总是'返回true'。 – KwiwaA 2013-03-13 10:44:57

回答

1

代码似乎从myHttpSrc加载图像。有一个onload的事件处理程序,它将在加载时触发。一旦加载完成,处理程序也会自行删除。

这不是破解,但由于onload处理程序除了自行删除之外没有其他任何操作,所以看起来多余。

0

只是为了扩大一点Kami的答案,这可能是必要的一个可能的情况是,也许在代码中的其他地方,他们检查img.onload是否为空 - 也许作为一种方式来检查是否或不是没有使用布尔值加载图像。

这听起来很不理想,有点古怪,但嘿,这是可能的。

这就是我的观点:在没有给出这个代码的上下文的情况下,没有人能够知道这是否是黑客或错误。

如果你需要需要才能知道答案:问问编写代码的人。