所见即所得网页编辑插件有那么那么多。随便选了一个用ueditor,全功能版本用不到。用精简版本umeditor,看了看功能也够用。在百度ue官网um界面试了试,字体、段落、大小都能用,于是下载下来发现竟然都失效了。
结果找了半天问题,没找到,看了看官网的演示版本竟然还是1.2.2,你么意思啊,百度!
1.2.3版bug老大了。你就发布了??自己官网还是用的1.2.2来演示,鄙视啊~~
自己简单调试了下:
发现设置字体、字号、段落下面的 li中 所有li的一个类,都是edui-combobox-item-
在umeidt.js 中,搜索edui-combobox-item-, 定位到8844行,是字号等模板数据, 通过正则解析模板,代码如下
$.parseTmpl = function parse(str, data) {
var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + 'with(obj||{}){__p.push(\'' + str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g,function (match, code) {
return "',obj." + code.replace(/\\'/g, "'") + ",'";
}) .replace(/<%([\s\S]+?)%>/g,function (match, code) {
return "');" + code.replace(/\\'/g, "'").replace(/[\r\n\t]/g, ' ') + "__p.push('";
}).replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/\t/g, '\\t') + "');}return __p.join('');";
var func = new Function('obj', tmpl);
return data ? func(data) : func;
};
1.2.3之前版本都没有问题,最新版本解析时,<%for( var i=0, label; label = items[i];i++) {<%"{循环体}
循环体内所有<%=var%> 经解析都变成了 obj.var,包括for中i变量
变成=>obj.i ,,大野的,对象里根本就没有obj.i,前台
edui-combobox-item-<%=i%> ===》》》edui-combobox-item-obj.i
obj.i 是空,所以前台所有的li都变成了edui-combobox-item-
你编辑字号、段落、字体功能就失效了。
解决办法: 原js<%=var%> 都解析为obj.var,
自定义一个解析正则<%@var%> ,只显示当前临时变量!
我用的是@号,大家可以自己定义某个符合,别冲突就行。
将8038行 $.parseTmpl=function(**){},某个replace结束处,添加下面代码:
.replace(/<%@([\s\S]+?)%>/g,function (match, code) {
return "'," + code.replace(/\\'/g, "'") + ",'";
})
将8838行 data-item-index=\"<%=index%>\" 改为data-item-index=\"<%@index%>\"8844行 edui-combobox-item-<%=i%>改为edui-combobox-item-<%@i%>
data-item-index='<%=i%>' 改为data-item-index='<%@i%>'
保存关闭,重新打开thinkphp,相应页面,ok 完美解决!
不过精简版本没有浮动之类的,准备再把图片文字结合的浮动问题完善一下~
大牛勿喷!
最佳答案
