如何覆盖window.screen?

时间:2014-07-30 19:51:43

标签: javascript phantomjs

我正在编写一个简单的PhantomJS应用程序,用于搜索寻找模式的特定页面。在其中一个页面中,网站的所有者正在读取window.screen宽度/高度属性并更改我的URL(这取消了页面其余部分的加载)。设置viewportSize会更改窗口的宽度/高度值,但不会更改screen对象的宽度/高度值。

尝试1

我的第一步是禁用导航,如下所示:

tab.onLoadStarted = function () {
    tab.navigationLocked = true;
};

但是,由于此检查是在<head>中完成的,因此导致load事件触发,有时页面尚未完全加载(导致其他许多内容)问题)。

尝试2

我尝试在第一次加载时覆盖屏幕对象:

tab.onLoadStarted = function () {
    tab.evaluate(function () {
        window.screen = {
                width: 1920,
                height: 1080
            };
    });
};

但是,该属性是只读的,因此设置它不会改变值。

TL;博士

在PhantomJS中,有没有办法覆盖window.screen值来设置我自己的屏幕尺寸?

1 个答案:

答案 0 :(得分:1)

您无法在window.screen事件中设置LoadStarted值,但您可以在Intialized事件中设置tab.onInitialized = function () { tab.evaluate(function () { window.screen = { width: 1920, height: 1080 }; }); }; 。所以,相反,代码看起来像这样:

{{1}}