Javascript 覆盖HTMLNode接口
我想连接到Javascript 覆盖HTMLNode接口,javascript,dom,Javascript,Dom,我想连接到节点构造函数。是否可以用我自己的节点构造函数覆盖公共节点构造函数 目前仅在chrome/firefox中测试 (function() { var _Node = window.Node; var Node = function() { Event.trigger("nodeCreation", this, arguments); // pseudocode _Node.apply(this, arguments); }
节点
构造函数。是否可以用我自己的节点构造函数覆盖公共节点构造函数
目前仅在chrome/firefox中测试
(function() {
var _Node = window.Node;
var Node = function() {
Event.trigger("nodeCreation", this, arguments); // pseudocode
_Node.apply(this, arguments);
}
window.Node = Node;
console.log(document.createElement("div") instanceof _Node); // true
console.log(document.createElement("div") instanceof Node); // false
}());
我很清楚如果我弄错了,这会有多危险。我也知道,如果我能做对的话,这是一款功能强大的产品
是否有其他方法覆盖本机DOM对象。扩展他们的原型并没有覆盖构造函数那样有用。您不能为DOM节点或任何其他DOM对象重新定义构造函数(但可以为JavaScript对象重新定义构造函数)
此外,尝试和重新定义DOM对象构造函数是完全没有用的,因为它们通常不能直接调用(Image和其他一些构造函数除外),因此参数的问题与此无关。可以使用突变事件来跟踪DOM更改。否。您不能为DOM节点或任何其他DOM对象重新定义构造函数(但可以为JavaScript对象重新定义构造函数)
此外,尝试和重新定义DOM对象构造函数是完全没有用的,因为它们通常不能直接调用(Image和其他一些构造函数除外),因此参数的问题与此无关。跟踪DOM更改可以使用突变事件来完成。试图挂接到
document.createElement
以避免涉及DOM遍历的替代方案。至少在基于webkit的浏览器中,您可以这样挂接它(没有用任何其他方法测试):document.crotteElement=document.createElement;document.createElement=函数(x){console.log('Creating'+x);返回此.crotteElement(x)}
试图挂接到document.createElement
以避免涉及dom遍历的备选方案。至少在基于webkit的浏览器中,您可以这样挂接它(尚未使用任何其他工具进行测试):document.crotteElement=document.createElement;document.createElement=函数(x){console.log('Creating'+x);返回此.crotteElement(x)}代码>