gpt4 book ai didi

javascript - TinyMCE 外包被选元素

转载 作者:数据小太阳 更新时间:2023-10-29 04:35:34 25 4
gpt4 key购买 nike

我在让 TinyMCE 包装所选内容时遇到问题。

第一个 style_format 简单地将类添加到所选元素,效果很好。

问题出在第二个 style_format 上,我希望它将选定的元素包装在

例如之前

<p>test text</p>
<p>test text</p>
<p>test text</p>
<p>test text</p>

之后

<p class="accordion_top">test text</p>
<div class="accordion_middle">
<div class="accordion_middle-wrapper">
<p>test text</p>
<p>test text</p>
<p>test text</p>
</div>
</div>

使用我下面的 jQuery 版本,有问题的代码是底部样式格式

$("#tinymce").tinymce({
script_url : HOME+"/webapp/shared/javascript/tiny_mce/tiny_mce.js",
mode : "textareas",
theme : "advanced",
skin : "cirkuit",
width: "726",
plugins : "advlist,insertdatetime,paste,print,searchreplace,spellchecker,table,wordcount,visualchars,xhtmlxtras,template,codemagic",
theme_advanced_buttons1 : "cut,copy,paste,pastetext,pasteword,selectall,undo,redo,|,hr,acronym,charmap,blockquote,replace,|,insertdate,inserttime,|,cleanup,removeformat,codemagic,",
theme_advanced_buttons2 : "wrap_div,styleselect,formatselect,|,bold,italic,underline,bullist,numlist,|,table,|,link,unlink,insertimage,spellchecker|mybutton",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 : "",
//theme_advanced_buttons1 : "|,,table,pasteword",
theme_advanced_blockformats : "p,h2,h3,h4,h5,h6",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
forced_root_block : "p",
force_br_newlines : false,
force_p_newlines : true,
valid_elements : "span[class|id],br[class|id],a[href|target|title],img[src|id|width|height|class|alt],i,"+
"li[class|id],ul[class|id],ol[class|id],p[class|id],"+
"table[class|id],th[class|id],tr[class|id],td[class|id],thead,tbody,"+
"h1[class|id],h2[class|id],h3[class|id],h4[class|id],h5[class|id],h6[class|id],strong[class|id],"+
"div[class|id]",
content_css : TEMPLATE_HOME+"/css/tinymce.css?" + new Date().getTime(),
plugin_insertdate_dateFormat : "%d/%m/%Y",
plugin_insertdate_timeFormat : "%H:%M",
paste_auto_cleanup_on_paste : true,
convert_urls: false,
relative_urls: false,
// Style formats
style_formats : [
{title : 'Accorion Top', selector : 'p,h2,h3,h4,h5,h6', classes : 'accordion_top'},
{title : 'Accorion Middle', block : 'div', classes : 'accordion_middle'}
],
setup: function (ed) {
// Create an wrap DIV button
ed.addButton ('wrap_div', {
'title' : 'Wrap Accordion',
'image' : HOME+'/webapp/shared/javascript/tiny_mce/themes/advanced/img/createlink.gif',
'onclick' : function () {
var text = ed.selection.getContent({ 'format' : 'text' });
if (text) {
tinyInsert('<div class="accordion_middle"><div class="accordion_middle-wrapper">' + text + '</div></div>');
}
}
});
}
});

最佳答案

它需要对 tinymce 核心 (Formatter.js) 进行重大更改才能使用样式插件获得您想要的内容。我会写一个自己的函数放在自己的 tinymce 插件中。要实现您的目标,您不需要那么多代码。

编辑:您几乎是正确的。首先使用 span 尝试此操作,以确保它在您的编辑器中有效。

setup: function (ed) {
// Create an wrap DIV button
ed.addButton ('wrap_div', {
'title' : 'Wrap Accordion',
'image' : HOME+'/webapp/shared/javascript/tiny_mce/themes/advanced/img/createlink.gif',
'onclick' : function () {
var text = ed.selection.getContent({ 'format' : 'text' });
if (text && text.length > 0) {
ed.execCommand('mceInsertContent', false, '<span class="accordion_middle"><span class="accordion_middle-wrapper">' + text + '</span></span>');
}
}
});
}

下一步将用 div 替换 span,并确保您的 tinymce 设置允许嵌套的 div 标签(请参阅 valid_children 设置)。

关于javascript - TinyMCE 外包被选元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com