У меня есть приложение, построенное на NWJS v0.14.7 (LTS), для которого мне было поручено добавить некоторые функции.В package.json для 'main' установлено значение index.html, а в index.html основной js-файл приложения загружается с помощью тега , создается иконка в трее, а затем он пытается расположить окноиспользуя следующий код:
// position
nw.Screen.Init();
var NW_WIN = nw.Window.get();
var NW_SCR = nw.Screen.screens[0];
NW_WIN.moveTo((NW_SCR.bounds.x+NW_SCR.bounds.width)-400,
(NW_SCR.bounds.y+NW_SCR.bounds.height)-240);
Похоже, это работает, поскольку окно всегда располагается в правом нижнем углу экрана при открытии, независимо от того, куда вы его перемещаете, прежде чем снова открывать приложение, однако, когдаЯ отлаживаю, получаю в консоли SDK следующее:
extensions::nw.Screen:62 (BLESSED_EXTENSION context for example.com) No source for require(desktopCapture)(anonymous function) @ extensions::nw.Screen:62
extensions::nw.Screen:62 (BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}(anonymous function) @ extensions::nw.Screen:62
index.html:135 (BLESSED_EXTENSION context for example.com) extensions::nw.Screen:62: Uncaught TypeError: Cannot read property 'chooseDesktopMedia' of undefined{TypeError: Cannot read property 'chooseDesktopMedia' of undefined
at extensions::nw.Screen:62:50
at chrome-extension://example.com/src/index.html:135:15}(anonymous function) @ index.html:135
index.html:135 (BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}(anonymous function) @ index.html:135
extensions::nw.Screen:62(BLESSED_EXTENSION context for example.com) No source for require(desktopCapture)(anonymous function) @ extensions::nw.Screen:62onload @ index.html:141
extensions::nw.Screen:62(BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}(anonymous function) @ extensions::nw.Screen:62onload @ index.html:141
index.html:141 (BLESSED_EXTENSION context for example.com) extensions::nw.Screen:62: Uncaught TypeError: Cannot read property 'chooseDesktopMedia' of undefined{TypeError: Cannot read property 'chooseDesktopMedia' of undefined
at extensions::nw.Screen:62:50
at onload (chrome-extension://example.com/src/index.html:141:31)}onload @ index.html:141
index.html:141 (BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}
Я просмотрел документы (URL для следования) и искал все, что мог, но не мог понятькак это исправить.Из того, что я могу сказать, nw.Screen должен поддерживаться в 0.14.7.Исходя из кода, показанного выше, я даже не могу сказать, почему вызывается chooseDesktopMedia.
Ссылка на документы: http://docs.nwjs.io/en/latest/References/Screen/#screenchoosedesktopmedia-sources-callback
Редактировать:
Я пробовализменив код просто так:
try {
var gui = require("nw.gui");
gui.Screen.Init();
} catch (e) {
console.error(e);
}
, и я все еще получаю те же ошибки:
extensions::nw.Screen:62 (BLESSED_EXTENSION context for example.com) No source for require(desktopCapture)(anonymous function) @ extensions::nw.Screen:62
extensions::nw.Screen:62 (BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}(anonymous function) @ extensions::nw.Screen:62
index.html:135 (BLESSED_EXTENSION context for example.com) extensions::nw.Screen:62: Uncaught TypeError: Cannot read property 'chooseDesktopMedia' of undefined{TypeError: Cannot read property 'chooseDesktopMedia' of undefined
at extensions::nw.Screen:62:50
at chrome-extension://example.com/src/index.html:135:10}(anonymous function) @ index.html:135
index.html:135 (BLESSED_EXTENSION context for example.com) try_catch has no message{<stack trace unavailable>}(anonymous function) @ index.html:135
index.html:137 TypeError: Cannot read property 'Init' of undefined(…)
Редактировать 2:
Я оставляю это открытым, потому что яХотелось бы знать, почему это не работает, когда должно, но в случае, если на него не получен ответ, и кто-то еще находит это, я решил проблему, просто используя window.screen
, о котором я не знал:
// position
NW_WIN.moveTo((screen.width - 400), screen.height - 240);
Я даже не могу найти это нигде, но window.screen
возвращает мне следующий объект:
{
availHeight: 860,
availLeft: 0,
availTop: 0,
availWidth: 1600,
colorDepth: 24,
height: 900,
orientation: {
angle: 0,
onchange: null,
type: "landscape-primary"
},
pixelDepth: 24,
width: 1600
}