如何使用键盘快捷键打开弹出窗口? [复制]

2024-04-16

可能的重复:
jQuery 的键盘快捷键 https://stackoverflow.com/questions/593602/keyboard-shortcuts-with-jquery

我想使用快捷键显示弹出窗口,而不是单击工具栏上的图标。 你有什么好主意吗? 感谢您的帮助。


Abody97的答案告诉你如何确定是否按下了某个组合键。如果您不确定如何使用该组合键来显示弹出窗口,这就是您所需要的。不幸的是,Safari 使这变得不必要的复杂化。

在全局脚本中,您需要一个如下所示的函数来显示弹出窗口,给定其 ID 和应显示它的工具栏项的 ID:

function showPopover(toolbarItemId, popoverId) {
    var toolbarItem = safari.extension.toolbarItems.filter(function (button) {
        return button.identifier == toolbarItemId && button.browserWindow == safari.application.activeBrowserWindow;
    })[0];
    var popover = safari.extension.popovers.filter(function (popover) {
        return popover.identifier == popoverId;
    })[0];
    toolbarItem.popover = popover;
    toolbarItem.showPopover();  
}

您还需要代码来在全局脚本的消息侦听器中调用此函数,如下所示(此示例并不假设您已经有消息侦听器):

safari.application.addEventListener('message', function (e) {
    if (e.name == 'Show Popover') {
        showPopover(e.message.toolbarItemId, e.message.popoverId);
    }
}, false);

最后,在注入的脚本中,侦听组合键的函数需要调用dispatchMessage, 如下:

safari.self.tab.dispatchMessage('Show Popover', {
    toolbarItemId : 'my_pretty_toolbar_item',
    popoverId     : 'my_pretty_popover'
});

(将其代替showPopUp()在 Abody97 的代码示例中。)

注意:如果您只有一个工具栏项和一个弹出框(并且从不打算添加更多项),那么事情就会变得简单得多。假设您已经将弹出窗口分配给扩展生成器中的工具栏项,您可以使用

safari.extension.toolbarItems[0].showPopover();

代替调用showPopover在全局消息监听器中,并省略调用中的消息值dispatchMessage在注入的脚本中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用键盘快捷键打开弹出窗口? [复制] 的相关文章