Ray*_*nos 5 javascript dom element
假设我想覆盖form.elements所有表格(当前和未来).
关于polyfilling的这个问题RadioNodeList可以通过拦截所有form元素并手动为elements它们的属性编写自己的getter 来解决.
除了以下,还有其他方法可以创建(形式)我需要拦截的元素
document.createElementdocument.createElementNSNode.importNodeNode.cloneNodeDOMImplementation.createDocument(也许,取决于有效覆盖Document.prototype.createElement/ NS是)单独的问题,忽略性能会有什么好的理由不拦截节点创建?
表单元素的拦截可以通过一个函数来完成,该函数通过搜索表单的标签名称来解析节点,如果特定的事件或属性没有像您那样设置,那么您必须设置它,否则它是一个已经拦截的表单。
第二种选择是重写createElementonElement和 ondocument以使新元素由上述函数解析。
不好的部分是,对于较旧的 IE 版本,您必须编写一个单独的 HTC 文件才能使 Element 的行为符合您的意愿。
希望这会有所帮助,即使它有很多信息并且没有代码(这是一个非常讨厌的代码)。
编辑:
换句话说,您可以创建一个用于跨浏览器使用的重写 DOM 类(或者至少这是我过去 4 个月所做的事情),您可以在其中采用所有特殊行为并出于特殊原因对待它们。
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |