Chrome不会看到通过Object.defineProperty添加getter和setter来重新定义属性
Chrome does not see attributes redefined with getter and setter added with Object.defineProperty
我需要重新定义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似乎创造了一个"影子src",并与自己的工作。(我可以读取和写入我的_src变量,但Chrome不使用它。)
我发现它可以添加this.getAttribute('src')
和this.setAttribute("src", value)
,但这不是我需要的。
有人有什么想法吗?
我想"解绑定"重载函数,获取/设置值并"重新绑定"它。你认为这可能吗?如何(暂时)恢复正常的getter/setter?
我发现解决我的问题的唯一方法是使用setAttribute
和getAttribute
。我真的认为这是唯一的办法!为了完全达到我的问题的目标(即"密切关注"元素的src
属性如何变化),我需要为每个元素重新定义setAttribute
和getAttribute
函数。
相关文章:
- 在Phonegap中重定向到新页面后,AdMob未定义
- $routeParams在传递到新视图时未定义&控制器
- 使用具有用户定义字段的新请求者创建新的Zendesk票证
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- 新的自定义角度指令不起作用
- 使用框架/语言中的getter/setter,或者定义自己的显式getter/setters
- 正在新文件中创建自定义任务
- 在自定义指令中角度设置新变量
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Ng管理员自定义参考列表-具有创建新条目的能力
- JavaScript-为什么当我向表中添加新列时,它会说“;未定义的“;在额外的细胞中
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 在数据表的新行中添加按钮,变得未定义
- 从新对象的属性更新对象的属性,但前提是新对象上的属性不是未定义的
- 在ecmascript 6中定义setter时出错
- 在 JavaScript 中由装饰器重新定义后的原始函数值
- Facebook图形api和新定义的对象和动作:消息:"未知路径组件"
- defineGetter,在CSSStyleDeclaration.prototype上定义setter
- 为无父级局部变量定义 Setter/Getter:不可能
- 将数组值替换为 Javascript 中新定义的值