我不使用eval,我不確定Crockford在以下方面遇到了什麼問題。有沒有更好的方法來解決以下問題,或者這只是我需要忽略的一點(如果有需要改進的地方,我更喜歡完善/改進我的解決方案)。函數(..)拋出'eval是邪惡的'消息
我正在使用一些像素跟蹤的東西,在這種情況下,客戶端已綁定JS功能到onclick
屬性的HTML圖像標記重定向站點。我需要可靠地跟蹤咔嗒聲,而不會遇到圖像上具有多個事件偵聽器的競態條件。策略是在運行時重寫事件,並在我自己的函數中複製和運行它。請注意,這是應用於我無法控制且無法更改的網站。所以解決方案看起來像這樣:
...
func = Function(img.attr('onclick'));
...
img.attr('onclick', '');
... //some custom tracking code
func.call(this);
和JSLint檢查器拋出eval is evil
錯誤。
有沒有更好的方法來避免href
動作的多個事件的競賽條件?
好像你裏面只需要觸發onclick事件處理程序,如果它包含JavaScript代碼。 img.onclick();或img.onclick.call(); – GillesC 2012-04-27 17:15:15
@gillesc技術上說,這是一個_property_而不是_attribute_。 – Alnitak 2012-04-27 17:18:58
事實上,但感謝指出它不是一個屬性,所以我可以正確糾正它。 – GillesC 2012-04-27 17:20:42