问候亲爱的社区,操纵/更改window.screen属性值
我的目标是欺骗屏幕对象的属性,但我不能只需使用覆盖属性: window.screen[property] = number;
或Object.defineProperty(...)
因为这些属性为只读。
因此,我想克隆或重新创建屏幕对象,操纵属性,然后覆盖整个window.screen对象。
我尝试:
var clone = Object.create(Screen.prototype);
Object.assign(clone, window.screen);
console.log(clone);
的原型克隆很好,但不是性能。 在尝试使用Object.getOwnPropertyNames
和Object.keys
函数获得它们(example here)后,它们必须位于原型中。 所以,我想这一点:
var clone = Object.create(Screen.prototype);
Object.assign(clone,Object.getPrototypeOf(window.screen));
console.log(clone);
其输出误差“类型错误:‘获得availWidth’调用的对象没有实现界面屏幕上”
使用for-in循环进行迭代并分配它们确实会输出相同的错误。
所以看起来我必须实现界面屏幕,即使我不确定我的计划是否在那之后工作。也许存在一个更简单的解决方案。
其他的想法:
我可以分配完整的画面对象作为原型(像Object.create(screen)
),然后在对象上设置自己的属性,但随后的原始值仍然可读。
也许我也可以通过使用Screen(...)
接口创建一个对象?
感谢您的帮助和意见!