В resizeTo
и resizeBy
методы не реализуются. Вы можете видеть, что при поиске по коду основания jsdom:
$ grep -P 'resize(To|By)' `find . -type f`
./lib/jsdom/browser/index.js: resizeBy: NOT_IMPLEMENTED(null, 'window.resizeBy'),
./lib/jsdom/browser/index.js: resizeTo: NOT_IMPLEMENTED(null, 'window.resizeTo'),
Если вы просто хотите, чтобы установить размер окна раз и навсегда во время инициализации, вы можете просто установить значение innerWidth
все, что вы хотите. В реальном браузере это неправильный способ сделать это, но в jsdom он будет работать.
Однако, если у вас есть код, который зависит от resizeTo
присутствия, вы можете добавить свой собственный polyfill в конструктор, который строит окна:
var jsdom = require("jsdom");
var document = jsdom.env({
html: "<html></html>",
done: function (error, w) {
console.log(w.innerWidth, w.innerHeight);
w.constructor.prototype.resizeTo = function (width, height) {
this.innerWidth = this.outerWidth = width;
this.innerHeight = this.outerHeight = height;
};
w.resizeTo(100, 200);
console.log(w.innerWidth, w.innerHeight);
}
});
Здесь отображается:
1024 768
100 200
Код выше для иллюстрации. Я не думал обо всех ошибках написания полинаполнения для resizeTo
. resizeBy
будет обрабатываться аналогичным образом, но добавит deltas к размеру окна.
Ваше последнее предложение означает, что вы пытались сделать это, но это не сработало. Что вы пробовали? – Louis
Несколько вещей. Я попробовал tstWindow.resizeTo (#) tstWindow.resizeBy (#), устанавливая атрибут width, устанавливая атрибут innerWidth и некоторые другие вещи, которые я не помню. –
Я подозреваю, что сталкиваюсь с трудностями частично из-за изменений API, но также, похоже, не полностью разобрался с jsDom. (Спасибо за вашу помощь по моему другому вопросу, Луис, это продолжение того же самого) –