javascript – js中src属性的getter / setter?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – js中src属性的getter / setter?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1711字,纯文字阅读大概需要3分钟。
内容图文
![javascript – js中src属性的getter / setter?](/upload/InfoBanner/zyjiaocheng/733/9b85d59025e443479ce575e2371b17b5.jpg)
有什么办法可以设置所有HTMLSourceElements的src属性的getter和setter吗?
我正在考虑将此作为我的网络应用程序的额外安全措施,该应用程序使用来自其他网站的JS.
通过“所有HTMLSourceElements的src属性的setter”,我的意思是应该在代码上调用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);
}
});
编辑:经过一些实验,如果你删除你需要的每个元素的src属性,这应该工作.有点hacky,但我能做的最好.
EDIT2:有了这个,理论上用户仍然可以覆盖你的get / set函数.要停止它,请尝试删除configurable:true(默认为false).我不确定,但从过去的经验来看,似乎他们甚至无法在一个实例上重新定义它.
内容总结
以上是互联网集市为您收集整理的javascript – js中src属性的getter / setter?全部内容,希望文章能够帮你解决javascript – js中src属性的getter / setter?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。