如何使用node.js获取屏幕分辨率

时间:2013-09-24 18:28:41

标签: javascript node.js client-server screen-resolution

我需要使用node.js获取屏幕分辨率,但以下代码不起作用。

var w = screen.width;
var h = screen.height;

这也行不通。

var w = window.screen.width;
var h = window.screen.height;

有人知道如何使用node.js获取屏幕分辨率吗? 谢谢。

5 个答案:

答案 0 :(得分:3)

现在有一个来自npm的屏幕模块:

https://www.npmjs.com/package/screenres

答案 1 :(得分:1)

使用screenz

const { width, height } = require("screenz");

console.log(width);
//=> 1920

console.log(height);
//=> 1080

答案 2 :(得分:0)

您应该检索客户端JavaScript代码中的window.screen.widthwindow.screen.height,并通过AJAX,WebSocket,表单数据等将该信息发送到服务器端Node.js应用程序。 / p>

例如:

(function(w) {
    $.ajax({
        type: 'POST',
        url: '/echo/json',
        data: {
            w: w.screen.width,
            h: w.screen.height
        },
        success: function() {
            console.log(arguments);
        },
        dataType: 'json'
    });
})(window);

这很常见,与服务器端技术无关。无论你在后端使用什么(Node.js,Python,Ruby,PHP,Java,ASP.NET等),你应该从客户端发送数据到服务器,因为服务器没有处理用户的浏览器直接。

答案 3 :(得分:0)

我用phantomJS解决了问题。

安装phantomJS

sudo apt-get install phantomjs

创建app.js文件:

var w = screen.width;
var h = screen.height;

console.log(w+"x"+h);

phantom.exit();

执行:

phantomjs app.js

返回:

1366x768

答案 4 :(得分:0)

这实在是太过分了,但我找到的节点模块已经不再适用了,它无论如何也无法处理多个显示器:

npm install nightmare

然后,如果您想要外部监视器的大小和坐标(如果可用的话):

const getBounds = async () => {
  const nm = new Nightmare({
    webPreferences: {
      nodeIntegration: true,
    },
  });
  const bounds = nm
    .goto('about:blank')
    .evaluate(() => {
      const electron = require('electron');
      const displays = electron.screen.getAllDisplays()
      const display = displays.find((d) => d.bounds.x !== 0 || d.bounds.y !== 0) || displays[0];
      return display.bounds;
    }).end();
  return bounds;
};