Drupal 7 / TinyMCE 3.5.8:paste_preprocess回调没有运行

时间:2016-01-14 16:45:57

标签: drupal-7 tinymce-3

通过Wysiwyg模块包含TinyMCE的Drupal 7。在Wysiwyg配置屏幕中启用“粘贴”。编辑器一般工作正常,但现在我正在尝试修改TinyMCE的粘贴功能以从HTML标签中去除所有属性。 (客户要求,不要问。)

已将以下内容添加到模块文件中:

function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
    if ($context['profile']->editor == 'tinymce') {
        drupal_add_js(drupal_get_path('module', 'MYMODULE').'/js/tinymce_callbacks.js');

        $settings['paste_preprocess'] = 'MYMODULE_tinymce_paste_preprocess_callback';
    }
}

并创建了 tinymce_callbacks.js ,其中包含以下内容:

function MYMODULE_tinymce_paste_preprocess_callback(pl, o) {
    alert(o.content);
    o.content = "-: CLEANED :-\n" + o.content;
}

实际的TinyMCE粘贴按钮仅适用于IE,但ctrl-V快捷键适用于每个浏览器。但是,不会调用回调。

我做了一些挖掘。 paste_preprocess设置肯定会被添加到正确的JavaScript对象中,但是引用它的唯一代码--TinyMCE Paste插件 - 没有被加载。所以看起来问题出在Drupal上,而不是TinyMCE。

任何让Drupal正确加载TinyMCE插件的帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

确保"粘贴"实际上正在加载TinyMCE插件。出于某种原因,在Drupal中有一个条目是" Buttons and Plugins"标题简单"粘贴"。然而,这并没有启用"粘贴"发生粘贴预处理回调所需的插件。

相反,请确保"粘贴文字"或"从Word粘贴"已启用。这应该导致"粘贴"要加载的插件,以及要发生的粘贴预处理回调。