Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js获取并设置正确的窗口位置_Node.js_Nw.js - Fatal编程技术网

使用node.js获取并设置正确的窗口位置

使用node.js获取并设置正确的窗口位置,node.js,nw.js,Node.js,Nw.js,在关闭事件中,我按如下方式保持窗口位置: localStorage.lastlayout = JSON.stringify({ "left": win.x, "top": win.y, "width": win.width, "height": win.height }); 在启动时,我使用以下方法恢复它: data = JSON.parse(localStorage.lastlayout); win.moveTo(data.left, data.top);

关闭
事件中,我按如下方式保持窗口位置:

localStorage.lastlayout = JSON.stringify({
  "left": win.x,
  "top": win.y,
  "width": win.width,
  "height": win.height
});
在启动时,我使用以下方法恢复它:

    data = JSON.parse(localStorage.lastlayout);
    win.moveTo(data.left, data.top);
    win.resizeTo(data.width, data.height);
问题是位置已关闭。据我所知,我得到了内心的位置。设置时,我设置外部位置。窗口标题和边框仅在设置时考虑

由于这是跨平台的代码,我无法在所有平台上测试它(目前),我不知道是否有可能获得窗口引擎的指标,以便我可以通过编程方式更正它(想想用户在Windows上更改DPI或主题)


有什么办法可以弥补这一点吗?

好的,我已经搞定了。我检测到相对于已知位置的偏移量
(0,0)
,然后将其从所需位置减去。虽然不完美,但它确实有效:

      win.resizeTo(128, 128);
      win.moveTo(0, 0);
      log("dbg", "win", "detected metrics: " + win.x + ", " + win.y);
      win.moveTo(data.left - win.x, data.top - win.y);
      win.resizeTo(data.width, data.height);

由于某些原因,初始调整大小是必要的。如果窗口不够大,在某些平台上似乎根本不会绘制标题和边框。接下来我把它移到原点。
win.x
win.y
包含此时的偏移量。第二个
moveTo()
使用正确的坐标,最后我将窗口调整到实际需要的大小。

类似的代码通常在我的Windows和Mac上运行良好。也许在某个地方(package.json?)您将“frame”设置为false?我根本没有设置它。从表面上看,我看不出这有什么帮助。我不想有一个无框窗口,我需要的标题和小部件。我错过什么了吗?我现在不能尝试,我现在没有访问代码的权限。你看到了吗?我认为记忆窗口位置应该是清单中的一个选项,对于这个问题,应该有一个使用操作系统默认值的选项。不,我没有。谢谢你给我指出这一页。我想知道为什么我找遍了却找不到它。我现在拥有的功能相同,但与平台无关。我采用指标而不是嗅探(最佳实践是测试功能是否可用,而不是针对特定的代理/平台)。此外,没有水平三角形。在XFCE上(例如,我测试了几个平台/win管理器),水平间距为3像素(基于主题)。因此,确定而优雅的解决方案是测量窗口度量。