缩放时上下文菜单偏离中心
Context menu off center when zoomed
我使用 node webkit 的菜单 API 构建了一个右键单击上下文菜单。我遇到的问题是当我增加页面的缩放比例时,比如从 1 到 1.4,上下文菜单从我的鼠标光标偏离中心。有其他人 运行 参与其中或有解决办法吗?
这是我生成菜单的方式:
// Load native UI library
var gui = require('nw.gui');
// Create an empty menu
var menu = new gui.Menu();
// Add some items
menu.append(new gui.MenuItem({ label: 'Item A' }));
menu.append(new gui.MenuItem({ label: 'Item B' }));
menu.append(new gui.MenuItem({ type: 'separator' }));
menu.append(new gui.MenuItem({ label: 'Item C' }));
// Remove one item
menu.removeAt(1);
// Popup as context menu
$(document).on("contextmenu", function() {
menu.popup();
})
这是 API 参考文献的 link:https://github.com/nwjs/nw.js/wiki/menu
我们可以针对针对缩放级别调整的鼠标位置,基于:
- https://github.com/nwjs/nw.js/issues/2023#issuecomment-71005188
- https://github.com/nwjs/nw.js/wiki/menu#menupopupint-x-int-y
固定代码:
// Load native UI library
var gui = require('nw.gui');
// window (needed to get zoom level)
var win = gui.Window.get();
// Create an empty menu
var menu = new gui.Menu();
// Add some items
menu.append(new gui.MenuItem({ label: 'Item A' }));
menu.append(new gui.MenuItem({ label: 'Item B' }));
menu.append(new gui.MenuItem({ type: 'separator' }));
menu.append(new gui.MenuItem({ label: 'Item C' }));
// Remove one item
menu.removeAt(1);
// Popup as context menu
$(document).on("contextmenu", function(ev) {
// transform zoom level into factor
var zoomFactor = Math.pow(1.2, win.zoomLevel);
menu.popup(
Math.round(zoomFactor * ev.clientX),
Math.round(zoomFactor * ev.clientY)
);
})
我使用 node webkit 的菜单 API 构建了一个右键单击上下文菜单。我遇到的问题是当我增加页面的缩放比例时,比如从 1 到 1.4,上下文菜单从我的鼠标光标偏离中心。有其他人 运行 参与其中或有解决办法吗?
这是我生成菜单的方式:
// Load native UI library
var gui = require('nw.gui');
// Create an empty menu
var menu = new gui.Menu();
// Add some items
menu.append(new gui.MenuItem({ label: 'Item A' }));
menu.append(new gui.MenuItem({ label: 'Item B' }));
menu.append(new gui.MenuItem({ type: 'separator' }));
menu.append(new gui.MenuItem({ label: 'Item C' }));
// Remove one item
menu.removeAt(1);
// Popup as context menu
$(document).on("contextmenu", function() {
menu.popup();
})
这是 API 参考文献的 link:https://github.com/nwjs/nw.js/wiki/menu
我们可以针对针对缩放级别调整的鼠标位置,基于:
- https://github.com/nwjs/nw.js/issues/2023#issuecomment-71005188
- https://github.com/nwjs/nw.js/wiki/menu#menupopupint-x-int-y
固定代码:
// Load native UI library
var gui = require('nw.gui');
// window (needed to get zoom level)
var win = gui.Window.get();
// Create an empty menu
var menu = new gui.Menu();
// Add some items
menu.append(new gui.MenuItem({ label: 'Item A' }));
menu.append(new gui.MenuItem({ label: 'Item B' }));
menu.append(new gui.MenuItem({ type: 'separator' }));
menu.append(new gui.MenuItem({ label: 'Item C' }));
// Remove one item
menu.removeAt(1);
// Popup as context menu
$(document).on("contextmenu", function(ev) {
// transform zoom level into factor
var zoomFactor = Math.pow(1.2, win.zoomLevel);
menu.popup(
Math.round(zoomFactor * ev.clientX),
Math.round(zoomFactor * ev.clientY)
);
})