2013-09-24 40 views
3

我需要使用node.js獲得屏幕分辨率,但以下代碼不起作用。如何使用node.js獲取屏幕分辨率

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

這也行不通。

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

有人知道如何通過node.js獲得屏幕分辨率嗎? 謝謝。

+0

如果服務器沒有運行圖形界面,那很可能是這種情況呢? –

+0

爲什麼會是服務器? –

+3

由於Node.js不運行客戶端,它在服務器上運行。 – hexacyanide

回答

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 
0

你應該檢索您的客戶端JavaScript代碼window.screen.widthwindow.screen.height並將該信息發送到通過AJAX,WebSocket的服務器端Node.js應用程式,如表格數據等

例如:

(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等),都應該將數據從客戶端發送到服務器,因爲服務器不處理用戶的瀏覽器直接。

+0

感謝尤金,但我想獲得相同的服務器的屏幕分辨率。 – Agneli

+1

如果您在服務器上運行瀏覽器,則可以在該瀏覽器中運行客戶端腳本,並以相同的方式將數據發送到服務器端應用程序。 –

+0

在運行多個顯示器的Linux服務器的常見情況下,X11在內部默認爲一個巨大的聚合窗口。 Phantomjs將返回該分辨率。無論操作系統如何,或者窗口管理器的配置如何,Eugene的答案都會返回瀏覽器運行的任何顯示的分辨率。 –