Reputation: 7947
I'm writing a simple PhantomJS app that scrapes particular pages looking for patterns. In one of these pages, the owner of the site is reading the window.screen
width/height properties and changing the URL on me (which is cancelling the loading of the rest of the page). Setting the viewportSize
changes the width/height values of the window, but not of the screen
object.
My first step was disabling navigation, like so:
tab.onLoadStarted = function () {
tab.navigationLocked = true;
};
However, because this check is done in the <head>
, it is causing the load
event to fire, and sometimes the page hasn't fully loaded yet (which is causing lots of other issues).
I tried overriding the screen object at the first load:
tab.onLoadStarted = function () {
tab.evaluate(function () {
window.screen = {
width: 1920,
height: 1080
};
});
};
However, that property is read-only, so setting it does nothing to change the value.
In PhantomJS, is there a way to override the window.screen
value to set my own screen size?
Upvotes: 4
Views: 2397
Reputation: 7947
You can't set the window.screen
values in the LoadStarted
event, but you can in the Intialized
event. So, instead, the code would look like this:
tab.onInitialized = function () {
tab.evaluate(function () {
window.screen = {
width: 1920,
height: 1080
};
});
};
Upvotes: 1