我需要在网页元素上重新定义Getter和Setter(让我们说" iframe"),对于" src"属性。 这是代码:
this._targets = {
"document.createElement": {
capture: true,
funcName: "createElement",
obj: document,
origPtr: document.createElement
}
};
_MycreateElement = function() {
var target = this._targets["document.createElement"];
var elem = target.origPtr.apply(target.obj, arguments);
if(arguments[0] == "iframe"){
Object.defineProperty(elem, "src", {
get: function() {
var _src = src;
console.log(_src);
return _src;
},
set: function(value){
_src = value;
}
});
}
return elem;
}
_MycreateElement是普通" createElement"上的重载函数。并且重载正常。 问题是Chrome似乎创建了像一个" shadow src"并与他自己合作。 (我可以读写我的_src变量,但Chrome不会使用它。)
我发现它可以添加this.getAttribute('src')
和this.setAttribute("src", value)
,但这不是我需要的。
有没有人有想法?
我在考虑"解开"过载功能,获取/设置值和"重新绑定"它。你觉得有可能吗? 如何恢复(临时)正常的getter / setter?
答案 0 :(得分:0)
我发现解决问题的唯一方法是使用setAttribute
和getAttribute
。
我真的认为这是唯一的方法!
为了完全达到我的问题的目标(那就是"密切注意"关于元素的src
属性如何变化)我需要重新定义setAttribute
和{{ 1}}函数,也适用于每个元素。