操纵/改变窗口.屏幕属性值
manipulate/change the window.screen property values
问候亲爱的社区,
我的目标是欺骗屏幕对象的属性,但是我不能只是通过使用覆盖属性:window.screen[property] = number;
或Object.defineProperty(...)
因为这些属性只读。
因此,我想克隆或重新创建屏幕对象,操作属性,然后覆盖整个窗口。屏幕对象。
我尝试:
var clone = Object.create(Screen.prototype);
Object.assign(clone, window.screen);
console.log(clone);
原型克隆得很好,但是的属性不行。在试图用Object.getOwnPropertyNames
和Object.keys
函数获得它们之后,它们也不起作用(这里的例子),它们必须在原型中。所以我试着这样做:
var clone = Object.create(Screen.prototype);
Object.assign(clone,Object.getPrototypeOf(window.screen));
console.log(clone);
输出错误"TypeError: 'get availWidth'在一个没有实现Screen接口的对象上调用"
使用for-in循环进行迭代并对其赋值也会输出相同的错误。
所以看起来我必须实现界面屏幕,即使我不确定我的计划是否在那之后工作。也许有一个更简单的解决办法。
其他想法:
我可以将完整的屏幕对象分配为原型(如Object.create(screen)
),然后在对象上设置自己的属性,但原始值仍然可读。
也许我也可以通过使用Screen(...)
接口创建一个对象?
谢谢你的帮助和想法!
似乎这很容易通过Object.defineProperty()方法的帮助,只要属性是可配置的。
var exampleProperty = 'colorDepth',
exampleValue = 55;
console.log("before:", screen[exampleProperty])
Object.defineProperty(screen, exampleProperty, {
// add descriptor properties here if desired
value: exampleValue
});
console.log("after:", screen[exampleProperty])
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 调整屏幕大小时更改属性值
- Element赢得'当我动态更改底部属性时,t锚定到屏幕底部
- 如何将最大高度css属性指定为屏幕大小
- 在 Javascript 文件中的屏幕上打印 html 输入属性和变量
- 仅当屏幕处于最大宽度时使元素居中(添加最小宽度属性)
- 如何自动调整图像的屏幕大小从Alt属性,而不是src
- 身体& # 39;宽度# 39;影响屏幕计算的属性
- 操纵/改变窗口.屏幕属性值
- 如何更改对象属性名称,当你'打印'对着屏幕
- 滑动转盘:如何为不同屏幕大小的同一转盘赋予不同的属性
- 基于类似屏幕的CSS媒体查询更改Javascript属性(HTML中的内联)
- 当我将屏幕尺寸缩小到Bootstrap's中、小或超小,我的点击处理程序停止工作,css悬停属性也停止工作
- CSS属性不'屏幕宽度改变时不适用.同时使用css和jQuery
- 在不添加新标签/元素的情况下向属性添加描述(用于屏幕阅读器)