【问题标题】:Onclick element simulate Esc keyOnclick 元素模拟 Esc 键
【发布时间】:2015-02-20 11:26:50
【问题描述】:

我有以下情况:

当用户点击一个链接时,应该通过 Javascript Esc 键触发。 所以为了能够更好地解释它,我有以下内容 到目前为止的代码:

1.我创建了一个函数:

//my function
function invokeEscKey() {
    var ev = document.createEvent('KeyboardEvent');
    ev.initKeyEvent(
        'keydown', true, true, window, false, false, false, false, 27, 0);
    document.body.dispatchEvent(ev);
}

也用 jQuery 试过这个:

//my function
function invokeEscKey() {
    jQuery.event.trigger({
        type : 'keypress', 
        which : 27 
    });
}

2.当用户点击href时,应该调用该函数:

$(function() {
    $('a.close').click(function() {
        //call this function to simulate ESC key press
        invokeEscKey();
    });
});

但这根本不起作用。我的问题是,解决这个问题的最佳方法是什么?

注意:我问这个的原因是因为我有一个 F11 键(全屏模式)被激活的弹出窗口。当用户单击关闭按钮时,必须撤消 F11,这通常通过按 ESC 键来完成。我希望这能自动完成。

【问题讨论】:

  • 事件挂钩是否监听附加到 body 元素的 ESC 按键,没有任何东西阻止传播?
  • 你想做什么?关闭一些对话框?为什么不在js中关闭而不是模拟escape按键呢?
  • @AleksandrM 我添加了一些解释性文字说明原因(以上文字)
  • 问题似乎是选择的键,在 Chrome 40 Ubuntu 全屏模式下只能用 F11 键关闭,而不是 ESC

标签: javascript jquery function esc-key


【解决方案1】:

JavaScript 无法从浏览器窗口触发操作系统级别的事件,除非浏览器通过特殊功能或 API 原生支持它。您不能使用 ESC 键发送系统级键盘事件来关闭全屏模式,或者使用 F1 启动系统帮助。

您可以使用主流浏览器支持的全屏 API:

if (document.exitFullscreen) {
    document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
    document.webkitCancelFullScreen();
}

更多: http://www.paulund.co.uk/javascript-full-screen-api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多