我想像提交按钮旁边一样制作预览按钮(就像在“发布新主题”表单的大多数情况下所做的那样)。如何以编程方式模拟工具栏的预览按钮单击?
我试过了$('#article_body_preview').click()
,但它没有用。 (我使用jQuery lib和#article_body_preview是工具栏的预览按钮元素)
答案 0 :(得分:5)
我自己也遇到过类似的问题。您可以在插件的源代码中找到命令的名称。例如。对于预览插件,源代码位于jscripts / tiny_mce / plugins / preview / editor_plugin_src.js 寻找第37行:
ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
因此,命令名称不是“预览”,而是“ mcePreview ”。
我想在init上设置全屏模式。我最后添加了
init_instance_callback : 'resizeEditorBox'
到init。
resizeEditorBox = function (editor) {
setTimeout("tinyMCE.activeEditor.execCommand('mceFullScreen')", 100);
}
在初始化和评论之前:
// a.win.setTimeout(function() {
// tinymce.dom.Event.remove(a.win, "resize", e.resizeFunc);
// tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}), {format:"raw"});
// tinyMCE.remove(c);
// a.remove("mce_fullscreen_container");
// i.style.overflow = c.getParam("fullscreen_html_overflow");
// a.setStyle(a.doc.body, "overflow", c.getParam("fullscreen_overflow"));
// a.win.scrollTo(c.getParam("fullscreen_scrollx"), c.getParam("fullscreen_scrolly"));
// tinyMCE.settings = tinyMCE.oldSettings
// }, 10)
在editor_plugin.js中- 因为我不需要任何其他模式,只需要全屏模式。希望有所帮助。
答案 1 :(得分:4)
我知道这是一个老问题,但我在tinyMCE 4中遇到了同样的问题,并且无法使上述任何解决方案起作用。这对我有用:
tinyMCE.activeEditor.buttons.charmap.onclick();
例如,我试图在插件中创建一个自定义菜单,其中包含一些内置命令:
tinymce.PluginManager.add('myplugin', function(editor) {
editor.addButton('mymenu', {
type: 'menubutton',
text: 'Insert',
icon: false,
menu: [
{
text: 'Special Character',
icon: 'charmap',
onclick: function() { editor.buttons.charmap.onclick(); }
}
]
});
});
答案 2 :(得分:3)
tinyMCE.activeEditor.execCommand('commandName');
其中commandName
是注册到预览按钮的命令。
答案 3 :(得分:1)
我想补充一点,我还需要将按钮设置为活动状态(突出显示)。我用这段代码来完成这个:
tinyMCE.activeEditor.controlManager.setActive('spellchecker', true);
将拼写检查器替换为您在TinyMCE init上的theme_advanced_buttons中设置的工具栏选项名称。
干杯!
顺便说一句,如果你想在默认情况下打开一个按钮,这里有一个论坛帖子,它可以帮助你: http://www.tinymce.com/forum/viewtopic.php?pid=95893#p95893
答案 4 :(得分:0)
要从您想要的下一个位置触发点击进入TinyMCE按钮:
jQuery(".js_inpost_gallery_insert_shortcode").click(function() {
tinyMCE.get(tinyMCE.activeEditor.editorId).controlManager.get(tinyMCE.activeEditor.editorId + "_" + 'pn_tinymce_button').settings.onclick();
return false;
});
答案 5 :(得分:0)
您还可以执行以下操作:
editor.ui.registry.getAll().buttons['my-button'].onAction()
我的案例的完整示例:(我尝试在不导入任何内容的情况下触发)
const parentTinyMCEId = 'mce_0' // When you know the target id
window.tinymce.editors.forEach(editor => { // Loop to find correct editor
if (editor.id === tinyMCEId) {
editor.execCommand('mceFocus', false, editor.id) // Set focus to the editor
setTimeout(() => {
editor.ui.registry.getAll().buttons['my-button'].onAction() // Trigger it!
}, 100)
return false // Stop looping
}
})