Методы 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
, вы можете добавить свой собственный полифилл в конструктор, который создает окна:
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
будет обрабатываться аналогично, но будет добавлять дельты к размеру окна.
person
Louis
schedule
22.10.2014