如何使用插件 SDK 确定屏幕尺寸?
How can I determine the screen size using addon SDK?
如何使用插件 SDK 获取屏幕尺寸?
var w = screen.width/2;
给我一个错误:Message: ReferenceError: screen is not defined
这会起作用:
var screen = require('sdk/window/utils').getMostRecentBrowserWindow().screen;
console.log(screen.width);
您可以使用已关联到您的附加组件的 window;它可能更安全,因为即使最后一个可见的 window 关闭但 firefox 仍然打开(例如在 OS X 上)它仍然可以工作:
const { window: { screen }} = require("sdk/addon/window");
console.log(screen.width);
如果你想要多显示器支持,我有一个脚本,但你必须理解它。它使用 XPCOM,并且需要一个范围。此脚本仅沿 x 轴检查,您还应沿 y 轴检查。
所以这里的脚本将检测 x 平面中的所有显示器,如果它落在主屏幕 0-20 坐标的 y 平面中,我不推荐这种方法。
var sm = Cc['@mozilla.org/gfx/screenmanager;1'].getService(Ci.nsIScreenManager);
function getScreens() {
var screen = null;
var screens = [];
var screenManager = sm;
var min = 0;
var max = 0;
for (x = 0; x < 15000; x += 600) {
var s = screenManager.screenForRect(x, 20, 10, 10);
if (s != screen) {
screen = s;
var left = {},
top = {},
width = {},
height = {};
screenManager.primaryScreen.GetRect(left, top, width, height);
screens.push({
width: width.value,
height: height.value,
min: min,
max: min + width.value
});
min += width.value;
}
}
return screens;
}
var screens = getScreens();
console.log('screens:', screens);
这是我推荐的方法
我需要检测所有监视器尺寸,并且不得不求助于 jsctypes,如果您需要它,它在这里:https://github.com/Noitidart/NativeShot/blob/master/modules/workers/MainWorker.js#L853-L1523
该代码非常长,那是因为它获取所有监视器并截取它们的屏幕截图。因此,您将只想提取监视器部分。如果您需要帮助,我可以为您完成。
如何使用插件 SDK 获取屏幕尺寸?
var w = screen.width/2;
给我一个错误:Message: ReferenceError: screen is not defined
这会起作用:
var screen = require('sdk/window/utils').getMostRecentBrowserWindow().screen;
console.log(screen.width);
您可以使用已关联到您的附加组件的 window;它可能更安全,因为即使最后一个可见的 window 关闭但 firefox 仍然打开(例如在 OS X 上)它仍然可以工作:
const { window: { screen }} = require("sdk/addon/window");
console.log(screen.width);
如果你想要多显示器支持,我有一个脚本,但你必须理解它。它使用 XPCOM,并且需要一个范围。此脚本仅沿 x 轴检查,您还应沿 y 轴检查。
所以这里的脚本将检测 x 平面中的所有显示器,如果它落在主屏幕 0-20 坐标的 y 平面中,我不推荐这种方法。
var sm = Cc['@mozilla.org/gfx/screenmanager;1'].getService(Ci.nsIScreenManager);
function getScreens() {
var screen = null;
var screens = [];
var screenManager = sm;
var min = 0;
var max = 0;
for (x = 0; x < 15000; x += 600) {
var s = screenManager.screenForRect(x, 20, 10, 10);
if (s != screen) {
screen = s;
var left = {},
top = {},
width = {},
height = {};
screenManager.primaryScreen.GetRect(left, top, width, height);
screens.push({
width: width.value,
height: height.value,
min: min,
max: min + width.value
});
min += width.value;
}
}
return screens;
}
var screens = getScreens();
console.log('screens:', screens);
这是我推荐的方法
我需要检测所有监视器尺寸,并且不得不求助于 jsctypes,如果您需要它,它在这里:https://github.com/Noitidart/NativeShot/blob/master/modules/workers/MainWorker.js#L853-L1523
该代码非常长,那是因为它获取所有监视器并截取它们的屏幕截图。因此,您将只想提取监视器部分。如果您需要帮助,我可以为您完成。