簡體   English   中英

您可以全局更改onChange嗎?

[英]Can you mutate onChange globally?

是否可以全局更改HTML'onChange'?

例如,是否可以使onChange始終調度(redux調度)每個事件處理程序的返回值?

是的,我知道這可能是您可以做的最邪惡的事情。 我試圖了解如何在語言級別實現事件處理程序。

知道這將如何影響框架IE React會很有趣,但是這個問題本身就是針對瀏覽器/ DOM的。 在這種情況下,“真實的” onChange。

<html>
<head>
<script type="text/javascript>

//is there anything we can do here to make the onchange below
//do something with the 5 it returns?

//for example, maybe console.log it, or redux dispatch it?

</script>
</head>
<body>

<input type="text" onChange="function(event){return 5;}" />

</body>
</html>

是的,您可以通過更改EventTarget原型中的addEventListener函數來實現。 考慮以下示例:

 const oldAddEventListener = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = function(eventName, eventHandler, useCapture) { const modifiedEventHandler = function(event) { if (event.type === 'change') { //dispatch your action here store.dispatch(....); } eventHandler(event); }; oldAddEventListener.call(this, eventName, modifiedEventHandler, useCapture); } 

如果事件類型為'change',它將首先運行if (event.type === 'change') {...}塊中具有的自定義代碼,然后繼續正常流程,調用事件處理程序函數。 否則,它將僅在正常流程中調用事件處理程序函數。

我不建議在一個嚴肅的項目中更改EventTarget原型,因為它可能導致無法預料的問題,尤其是在使用第三方腳本時。 但是出於教育目的,我建議您試用原型並更改javascript的原始行為,因為它可以幫助您更好地了解javascript。 另外,原型很有趣! =)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM