为输入上的 value 属性创建新绑定(bind)后,当用户手动修改该值时,该值不再更改。
绑定(bind)更改后会丢失什么?常规用户交互是否使用按键监听器?
我正在更改 setter/getter 以使元素的文本自动绑定(bind)到输入的 value 属性(使用 Object.defineProperty(input,'value')...
这导致用户与输入的交互不再更改 value 属性。因此,如果我作为用户在输入中键入“2”,则输入的值仍将是其开始时的值,而不是“2”。
因此重新定义 value 属性肯定会破坏旧的 setter。
最佳答案
我现在似乎找不到权威的引用资料,但以这种方式更新主机对象(基本上是浏览器提供的任何对象,而不是 JS 本身)通常是不可能/安全的。如果您坚持,您可以尝试 Object.getOwnPropertyDescriptor
看看是否可以在 Object.defineProperty
之前获取默认 setter 并覆盖它。
更多信息:http://perfectionkills.com/whats-wrong-with-extending-the-dom/ (特别参见“宿主对象没有规则”)
关于javascript - HTML/Javascript - '<input type=text' 交互发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375959/