tinymce prism代码高亮图文详解

序:

        还是有点难度的,卡到不只一个地方,百度难度也是大,还好,搞定了。

提示:

        1、博主tinymce是6.+版本

        2、不懂怎么下载prism的去看我这篇=》prism.js使用图文教程_雪狼之夜的博客-CSDN博客

        3、不懂怎么设置中文的看我这篇(滑到这篇最底下有写)=》tinymce Promise.allSettled is not a function报错解决方案_雪狼之夜的博客-CSDN博客_tinymce报错

        4、本文只教怎么集成到tinymce读取代码初始化代码到文本框异步innerHTML到页面div还有代码提示没耐心的小伙伴点这里直接下载demo====》tinymce6.+高亮提示demo-Node.js文档类资源-CSDN下载

要达到的效果如图

        

目录   

 正文:

        1、第一个坑,你要想tinymce用你自己引用的prism.js要在tinymce设置这个代码。如图

codesample_global_prismjs:true,//允许调用用户自己引入的prism.js和prism.css

         2、第二个坑,像博主最前面截图的,菜单只有高亮提示一个按钮是如下设置的这里我就不截图了。

plugins: 'codesample',//语言提示组件
toolbar: 'codesample',//语言提示菜单
menubar:false,//菜单栏
codesample_languages: [
	{text:'jquery',value:"jq"},
],//示例代码

        3、第三个坑,所有操作要在编辑器初始化完再操作,跟plugins: 'codesample',toolbar
平级。

init_instance_callback: (editor) => { //编辑器初始化完毕回调
					
}

         4、获取和设置内容建议你写在init_instance_callback的{}里面,你也可以在外面setTimeout(()=>{},1000)  太丑。不建议

tinymce.get('tinydemo1').setContent(htmlVal)//编辑时数据回填
tinymce.get('tinydemo1').getContent()//获取编辑器内容

         get后面是id注意:别用tinymce.activeEditor.getContent() ;因为这玩意在你一个html有2个tinymce的时候就只指向最后一个tinymce

        5、你如果tinymce.get('tinydemo1').getContent() 的内容直接$("#tinydemo1").html()是不行的,因为会变成如下图,也就是没有被prism.js格式化

         这里你要用Prism的异步方法重新渲染一遍,一样的建议写在$("#tinydemo1").html()之后,都放在init_instance_callback{}里面

document.querySelectorAll("code").forEach(block => Prism.highlightElement(block)); //Prism 异步要加这段,不然提

 好,这里重点就都说完了,原创不易,转载附上本文链接

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要让 Vue3 的 tinymce 组件支持代码高亮,可以使用 tinymceCode Sample 插件。首先需要在组件中引入 Code Sample 插件,然后在 tinymce 的初始化配置中启用该插件,并设置插件的语言列表。以下是一个示例代码: ```html <template> <div> <tinymce v-model="content" :init="initSettings"></tinymce> </div> </template> <script> import tinymce from 'tinymce/tinymce'; import 'tinymce/themes/silver'; import 'tinymce/plugins/code'; import 'tinymce/plugins/codesample'; import 'tinymce/skins/ui/oxide/skin.css'; import 'tinymce/skins/ui/oxide/content.css'; export default { components: { tinymce, }, data() { return { content: '', initSettings: { skin: false, content_style: 'body { font-family: Helvetica, Arial, sans-serif; font-size: 14px }', plugins: 'code codesample', toolbar: 'undo redo | bold italic underline | code | codesample', codesample_languages: [ { text: 'HTML/XML', value: 'markup' }, { text: 'JavaScript', value: 'javascript' }, { text: 'CSS', value: 'css' }, { text: 'PHP', value: 'php' }, { text: 'Ruby', value: 'ruby' }, { text: 'Python', value: 'python' }, { text: 'Java', value: 'java' }, { text: 'C', value: 'c' }, { text: 'C#', value: 'csharp' }, { text: 'C++', value: 'cpp' }, ], }, }; }, }; </script> ``` 在上面的代码中,首先引入了 tinymceCode Sample 插件以及相关的 CSS 文件。然后在组件的 data 中定义了 content 和 tinymce 的初始化配置项。其中,需要注意的是,codesample_languages 列表中的 value 值应该与 Prism.js 支持的语言名称一致。最后在组件的模板中使用 tinymce 组件即可。 需要注意的是,如果你要使用 Vue3 的 tinymce 组件,需要安装 @tinymce/tinymce-vue3 包。此外,为了让代码高亮正常工作,还需要在项目中引入 Prism.js 库,并在页面中引入 Prism.js 的 CSS 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪狼之夜

打个赏,让博主知道博文没白写

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值