如何禁用TinyMCE 4键盘快捷键

时间:2014-11-04 作者:TBone

我想禁用all TinyMCE 4个键盘快捷键。我四处寻找了一个可行的解决方案,但只意识到TinyMCE文档有多么糟糕。

我确实找到了一个answer here 但要么我不知道如何应用它,要么它不适用于TinyMCE 4(它是在WP 3.9+中引入的)。

任何有合理TinyMCE和WP知识的人谁能破解这个?

2 个回复
SO网友:bonger

Re answer cited by the OP:

Edited to add meta and access and other.

这个custom_shortcuts 提到的旗帜在tinymce 3中。x(参见here) 但从4中删除。x、 在扫描震源时,似乎没有任何等效物被替代。

上面提到的foo函数方法仍然可以使用。在主题的“functions.php”中:

add_action( \'wp_tiny_mce_init\', function () {
    ?>
    <script>
        function wpse167402_tiny_mce_init(ed) {
            ed.on(\'init\', function () {
                // Note these lists may not be complete & that other tinymce plugins can add their own shortcuts anyway.
                var ctrls = [ \'b\', \'i\', \'u\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'z\', \'y,ctrl+shift+z\', \'s\', \'k\', \'Alt+F\', \'P\', \'shift+e > ctrl+shift+p\' ]; // Could add \'x\', \'c\', \'v\'.
                var metas = [ \'b\', \'i\', \'u\', \'z\', \'y,meta+shift+z\', \'s\', \'k\' ]; // Could add \'x\', \'c\', \'v\'.
                var modKeys = [ \'c\', \'r\', \'l\', \'j\', \'q\', \'u\', \'o\', \'n\', \'s\', \'m\', \'z\', \'t\', \'d\', \'h\', \'o\', \'x\', \'a\', \'w\' ];
                var accesss = [ \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'a\', \'s\', \'c\', \'r\', \'l\', \'j\', \'q\', \'u\', \'o\', \'m\', \'z\', \'t\', \'d\', \'h\', \'p\', \'x\' ];
                var others = [ \'Ctrl+Shift+F\', \'Meta+K\', \'alt+119\', \'Alt+F10\', \'Alt+F9\', \'Alt+F10,F10\', \'Alt+F11\' ];
                var i;

                // Overwrite shortcuts with no-op function. Key sequences will still be captured.
                for (i = 0; i < ctrls.length; i++ ) {
                    this.addShortcut(\'ctrl+\' + ctrls[i], \'\', function () {});
                }
                for (i = 0; i < metas.length; i++ ) {
                    this.addShortcut(\'meta+\' + metas[i], \'\', function () {});
                }
                for (i = 0; i < modKeys.length; i++ ) {
                    this.addShortcut(\'alt+shift+\' + modKeys[i], \'\', function () {});
                }
                for (i = 0; i < accesss.length; i++ ) {
                    this.addShortcut(\'access+\' + accesss[i], \'\', function () {});
                }
                for (i = 0; i < others.length; i++ ) {
                    this.addShortcut( others[i], \'\', function () {});
                }
            });
        }
    </script>
    <?php
});
function wpse167402_tiny_mce_before_init( $mceInit ) {
    $mceInit[\'setup\'] = \'wpse167402_tiny_mce_init\';
    return $mceInit;
}
add_filter( \'tiny_mce_before_init\', \'wpse167402_tiny_mce_before_init\' );

Original answer

原来的答案取代了编辑的shortcuts 无操作的对象SettupEditor 在创建任何tinymce实例之前激发事件):

add_action( \'wp_tiny_mce_init\', function () {
    ?>
    <script>
    tinymce.on(\'SetupEditor\', function (editor) {
        editor.shortcuts = { add: function() {} };
    });
    </script>
    <?php
});
尽管这禁用了tinymce的所有快捷方式,但它有一个不幸的副作用,即允许默认浏览器行为,这对于contentEditable 元素(tinymce的编辑框标记为)可以包括各种格式,如ctrl+b、ctrl+i和ctrl+u(关于这方面的文档很差),具体取决于浏览器。解决这个问题的一种方法是使用cmdFunc 替换为noop函数:

add_action( \'wp_tiny_mce_init\', function () {
    ?>
    <script>
    tinymce.on(\'SetupEditor\', function (editor) {
        var orig_shortcuts_add = editor.shortcuts.add;
        editor.shortcuts.add = function(pattern, desc, cmdFunc, scope) {
            return orig_shortcuts_add(pattern, desc, function () {}, scope);
        };
    });
    </script>
    <?php
});

SO网友:Nathan

我刚想Id共享:我正在通过wp\\U editor()在前端使用tinymce我已经取消了插入/编辑链接等键盘快捷键或帮助,我正在使用:

<?php
                            $content = $posted[\'rm_details\'];
                            $editor_id = \'rm_details\';
                            $settings = array(
                                \'media_buttons\'     => false,
                                \'drag_drop_upload\'  => false,
                                \'textarea_rows\'     => \'15\',
                                \'tinymce\' => array(
                                    \'content_css\'               => get_template_directory_uri() . \'/styles/tinymce5.css\',
                                    \'toolbar1\'                  => \'bold,bullist,numlist\',
                                    \'toolbar2\'                  => \'\',
                                    \'paste_word_valid_elements\' => \'p,b,strong,li,br\',
                                    \'plugins\'                   => \'\',
                                ),
                                \'quicktags\'         => false
                            );
                            wp_editor( esc_textarea( $content ), $editor_id, $settings ); ?>
设置“plugins”(插件)=>“”,似乎可以做到这一点。

此外,这似乎为我启用了默认的浏览器快捷方式,

谢谢

内森

结束

相关推荐

将纹理区域设置为TinyMCE(编辑框)

我选择了一个旧插件,我需要根据客户的具体需求对其进行增强。在管理部分有一个文本区域,用于添加有关下载的信息(基本上是自定义帖子类型)。但是,“描述”字段是一个简单的文本区域,因此只存储文本。客户端需要能够以类似于WP中其他地方的帖子或博客编辑器的方式使用此功能。它主要需要添加新行和格式,而无需手动添加html。因此,根据我对WP的有限了解,我认为前进的方向是告诉WP如何利用TinyMCE。。。以下是用于在相关管理页面中创建的函数; public function display_sdm_descri