js中的src属性的getter / setter?

德·杜马里

有什么方法可以设置所有HTMLSourceElements的getter和src属性的setter?我正在考虑将此作为我的Web应用程序的额外安全措施,该Web应用程序使用其他网站的JS。通过“所有HTMLSourceElement的src属性的设置者”,我的意思是应该在类似以下代码的代码上调用setter:SomeVideoElement.src =“ /static/somevideo.mp4”

到目前为止,我已经尝试过:

HTMLElement.prototype.__defineGetter__("src", function () {
    console.log("getter called!");
    debugger;
});
HTMLElement.prototype.__defineSetter__("src", function (val) {

    debugger;
});
//tested at chrome, didn't yield any logs (getters and setters not called)

HTMLSourceElement.prototype._setAttribute = HTMLSourceElement.prototype.setAttribute;
HTMLSourceElement.prototype._getAttribute = HTMLSourceElement.prototype.getAttribute;
HTMLSourceElement.prototype.setAttribute = function(){
   console.log("HTMLSourceElement.setAttribute called!");
   debugger;
   HTMLSourceElement.prototype._setAttribute.apply(this, arguments);
}
//tested at chrome. Called only for codes like: SomeVidElem.setAttribute("src",someurl)

有什么办法吗?还是这根本不可能?谢谢 : )

西蒙斯特

__defineGetter__并且__defineSetter__已过时,并且可能已过时。Object.defineProperty(parentObject, 'propName', {})是新方法。

我无法使其正常工作,但也许其他人可以?

Object.defineProperty(HTMLSourceElement.prototype, 'src', {
    enumerable: true,
    configurable: true,
    get: function(){
        return this.getAttribute('src')
    },
    set: function(newval){
        console.log('being set');
        this.setAttribute('src',newval);
    }
});

编辑:经过一些试验,如果您然后需要的每个元素deletesrc属性,这应该工作有点hacky,但我能做的最好。

EDIT2:这样,用户在理论上仍然可以覆盖您的get / set函数。要停止此操作,请尝试删除configurable: true(默认为false)。我不确定,但是根据过去的经验,似乎他们甚至无法在实例上重新定义它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Swift编程:存储属性中的getter / setter

来自分类Dev

模型中双向加密属性的Getter / setter

来自分类Dev

getter和setter中的NullPointerException

来自分类Dev

getter和setter如何更改Dart中的属性?

来自分类Dev

Swift中的存储属性可以有getter和setter吗?

来自分类Dev

使用getter和setter与在JavaScript中定义属性

来自分类Dev

INotifyPropertyChanged模型中原始属性的ViewModel中的Getter和setter

来自分类Dev

使用getter和setter与在JavaScript中定义属性

来自分类Dev

如何防止在JavaScript中执行继承属性的getter setter方法

来自分类Dev

INotifyPropertyChanged模型中原始属性的ViewModel中的Getter和setter

来自分类Dev

用于getter和setter的对象定义属性

来自分类Dev

引用属性而不是getter和setter

来自分类Dev

Haxe属性-Getter和Setter vs @:isVar

来自分类Dev

swift 属性空的 setter 和 getter

来自分类Dev

限制 getter 和 setter 可访问的属性

来自分类Dev

JavaScript getter和setter

来自分类Dev

PHP的getter和setter

来自分类Dev

java enum getter setter

来自分类Dev

Is this method a getter/setter or neither

来自分类Dev

AngularJS getter / setter

来自分类Dev

向量的getter / setter

来自分类Dev

PHP的getter和setter

来自分类Dev

getter,setter和loops

来自分类Dev

Getter 和 Setter 方法

来自分类Dev

删除 getter/setter Javascript

来自分类Dev

为js对象分配setter / getter

来自分类Dev

js如何区分getter和setter

来自分类Dev

空的setter与没有setter的属性

来自分类Dev

空的setter与没有setter的属性