我發現在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