HTML/Javascript - “<input type=text”交互发生了什么

HTML/Javascript - What is happening with '<input type=text' interactions?

本文关键字:text type 交互 什么 发生了 input Javascript HTML      更新时间:2023-09-26

在输入上为 value 属性创建新绑定后,当用户手动修改值时,该值将不再更改。

更改绑定时会丢失什么?常规用户交互是否使用按键侦听器?

我正在更改 setter/getter 以使元素的文本自动绑定到输入的值属性(使用 Object.defineProperty(input,'value')...

这会导致用户与输入的交互不再更改 value 属性。因此,如果我作为用户在输入中键入"2",则输入的值仍将是它开始的值,而不是"2"。

因此,重新定义 value 属性必须打破旧的 setter。

我现在似乎找不到权威参考,但通常不可能/安全地以这种方式更新主机对象(基本上是浏览器提供的任何对象,而不是 JS 本身)。 如果你坚持,你可能会尝试Object.getOwnPropertyDescriptor看看是否可以在Object.defineProperty和覆盖它之前获得默认的 setter。

详细信息:http://perfectionkills.com/whats-wrong-with-extending-the-dom/(请参阅"主机对象没有规则")