我需要使用TinyMCE编辑器,但我还需要能够编辑数学方程式和公式。我在TinyMCE安装中添加了FMath编辑器插件。
是的它可行,我可以添加方程式,但方程式生成 img 标签, src 包含 blob:http url ,这意味着,图像存在于浏览器内存中,并在浏览器关闭后被删除。
是的,有几个技巧如何使用AJAX的blob img标签做一些事情,但问题是,我希望能够将我编辑的文本加上数学方程式保存在数据库中。
我认为最好的方法是在数据库中保存等式的MathML / Latex表示。障碍是,FMath编辑器的文档很差,所以我不知道如何获得这个生成的MathML / Latex代码。
那我怎么能这样做,是否有一些FMath函数,getMathML()代码......?
通过TinyMCE访问插件API的问题很热烈?
答案 0 :(得分:1)
我开发了自定义插件解决方案,请看一下: https://github.com/Axel186/mathsymbols-tinymce-plugin
它使用MathJax渲染字体。它是免费的并且拥有麻省理工学院的许可证。
看看我的其他插件,您可能有兴趣使用数学函数生成一些图表或图形。
答案 1 :(得分:0)
如果您在TinyMCE插件文件夹中检查了FMath的plugin.min.js,它会在TinyMCE创建的iframe中加载一个html页面OnlyEditor.html。这个html页面包含如下的getter函数:
<script type="text/javascript">
var e1 = $("#editor1").mathEditor({ width: 1000, height: 400 }),
mathml = null;
e1.mathEditor("setSaveCallback", clientSaveMethod);
function clientSaveMethod(){
// get info from editor ex: get image
console.dir(e1.mathEditor("getMathML", "UNICODE", "true"));
}
function getMathML(){
return e1.mathEditor("getMathML", "UNICODE", "true");
}
function getBlobOrUrl(returnFunc){
return e1.mathEditor("getBlobOrUrl", returnFunc, "UNICODE", "true");
}
function setMathML(mathml){
e1.mathEditor("setMathML", mathml);
}
function getImage(){
return e1.mathEditor("getImage","png");
}
function getMathMLToLoad(){
return null;
}
// autoload used in tinyMCE editor - do not delete
if (window.parent !== null && window.parent.getMathMLToLoad !== null) {
mathml = window.parent.getMathMLToLoad();
if (mathml !== null) {
e1.mathEditor("setMathML", mathml);
}
}
</script>
因此getMathML()以xml格式返回原始MathML。 getImage()返回生成的图像的blob地址/数据。您还可以使用setMathML(mathml)将FMath编辑器设置为加载特定公式。