javascript - 当监听 Ctrl + B 事件时,书签选项卡显示

标签 javascript jquery html contenteditable

我正在尝试为 contenteditable div 实现 Ctrl+B ,这应该使文本变为粗体。

我遇到的唯一问题是,当按下 Ctrl+B 时,会出现浏览器的书签选项卡。

( fiddle )

$(document).ready(function() {
    $('#editable').designMode = 'on';
    $('#editable').on('keyup', function(e) {
        console.log(e.which);
        if(e.which == 66 && e.ctrlKey) {
            e.preventDefault();
            console.log('bold');
            document.execCommand ('bold', false, null);
            return false;
        }
    });
});
#editable {
    width:200px;
    height:100px;
    border:1px solid #999;
    border-radius: 3px;
    padding: 10px;
    box-sizing:border-box;
}

#editable:focus {
    outline: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div contenteditable="true" id="editable"></div>

当我专注于该可编辑 div 时,请帮助我找到一种禁用该书签的方法。

最佳答案

检查此解决方案

jsFiddle

var g_state = 0;
$(document).ready(function() {
    $('body').keydown( function ( eve ) {
        if (eve.which === 17) {
            eve.preventDefault();
            g_state = 1;
        }
        return true;
    });
    $('body').keyup( function ( eve ){
        if (eve.which === 17) {
            eve.preventDefault();
            g_state = 0;
        }
        return true;
    });
    $('body').keypress( function ( eve ) {
        eve.preventDefault();
        if (eve.ctrlKey && (eve.which === 78)) {
            alert("(eve.ctrl + 'n')");   
        }
        else {
            if (g_state && (eve.which === 78)) {
                alert("(ctrl tracking by key up/down + 'n', resetting)");
                g_state = 0;
            }
            else {
                if (eve.shiftKey && (eve.which === 78)) {
                    alert("(eve.shift + 'n')");   
                }
                else {
                    alert("pass");   
                }
            }
        }
    });
});

嗨,悬挂科鲁兹,

这里没有任何火箭科学,我们在这里所做的是防止事件沸腾。并停止事件到达网络浏览器。 如果事件是可取消的,则 PreventDefault() 方法会取消该事件,这意味着属于该事件的默认操作将不会发生。 单项

例如,这在以下情况下很有用:

Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL

At the document level we are binding all main three event 
    keydown
    keyup    
    keypress

and identifying key combination as well to prevent some key combination that is being used by browser as well. 

如果您需要任何进一步的帮助,请告诉我

关于javascript - 当监听 Ctrl + B 事件时,书签选项卡显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566493/

相关文章:

javascript - 更新列表中的项目

javascript - 如何在 native react 中提取图像中最常用的颜色?

php - 发布的值显示在 Firebug 中,但在尝试访问它时显示空白数组

javascript - FullPage.js 和 SlimScrolling.js 更改滚动步骤

html - 覆盖 CSS 底部边框长度

javascript - 如何循环表行并获取列复选框

javascript - Javascript 未向隐藏字段输入值的问题

javascript - 仅对表格内容进行 javascript html 排序

jquery - 如何防止特定选择器上的 document.ajaxstart

html - 使用 HTML 文档类型在 XHTML 中编写网页的某些部分有什么问题吗?