检测 TinyMCE 文本区域中的按键事件

Detect Keypress event in TinyMCE Text Area

本文关键字:事件 TinyMCE 文本 区域 检测      更新时间:2023-09-26

我已经成功地在Drupal 7 Form API的文本区域中嵌入了一个TinyMCE文本编辑器。我尝试将下面的代码粘贴到我的 JavaScript 代码中,但没有运气。

tinyMCE.init({         
    setup : function(ed) {
        ed.onKeyPress.add(function(ed, e) {
            console.debug('Key press event: ' + e.keyCode);
        });
    }
});

没有错误,只有警告,每次我在文本区域键入时:

'KeyboardEvent.keyLocation' is deprecated. Please use 'KeyboardEvent.location' instead. 

我将如何修复警告?

阅读此链接:https://www.drupal.org/node/1714068

将以下代码粘贴到 .module 文件中。

/**
* Implements hook_wysiwyg_editor_settings_alter().
*/
function MODULENAME_wysiwyg_editor_settings_alter(&$settings, $context){    
     if($context['profile']->editor == 'tinymce') {          
         drupal_add_js(drupal_get_path('module', 'MODULENAME') . '/MODULENAME_tinymce_callbacks.js');
         $settings['setup'] = 'MODULENAME_tinymce_setup_callback';           
     }
}

在MODULENAME_tinymce_callbacks.js

 function MODULENAME_tinymce_setup_callback(ed){ 
     var range = 0;
     ed.onEvent.add(function (ed, e) {
         range = ed.selection.getRng().startOffset;  
         console.log(range);
     });
 }

然后,光标位置将记录在浏览器的控制台中。

请将您的 TinyMCE 插件更新到最新版本。看起来您使用的是不支持最新jQuery或最新浏览器的旧版本的TinyMCE。如果您已经更新了TinyMCE插件,请禁用您的主题并启用默认的drupal主题/模板,然后再次检查。

希望这对你有帮助