需求:百度UEditor,如果一实例化那么将开头的空段HTML去掉。
修改:javascript
源码
function removeEmpty(e){
e.setContent('');
}
var ueContent = UE.getEditor('content');
ueContent.addListener('ready',removeEmpty(ueContent));
报错
TypeError: me.body is undefined
提问
1)为什么无法将ueContent这个对象传入到函数removeEmpty中
2)百度UEditor如何去掉头尾部默认的这一段HTML
大家讲道理2017-04-10 14:32:02
第一个问题”javascript 是否存在函数引用传递?“,我想你可能还不了解”引用类型“和”基本类型“的概念,这里有一篇文章你可以看一下:http://hellobug.github.io/blog/javascript-variable-assignment/
第二个问题”为什么无法将ueContent这个对象传入到函数removeEmpty中“,我猜你大概是弄错了回调函数的写法,
ueContent.addListener('ready',removeEmpty(ueContent));
你这样子写自然是不行的,因为你在这句代码执行的时候就调用了 removeEmpty
,代码里怎么可能能得到 me.body
,这个应该是 ready
后才能拿到的东西吧?
改成这样试试:
ueContent.addListener('ready', function() { removeEmpty(ueContent) });
第三个问题,我也不知道
PHP中文网2017-04-10 14:32:02
应该是这样吧
var ueContent = UE.getEditor('content');
ueContent.addListener('ready',function(editor){
//editor.setContent("");
ueContent.setContent("");
});
http://ueditor.baidu.com/doc/#UE.Editor:ready
btw: 我没用过uedtior. 不过我会查文档,google再发问.
更新,走眼了.
如果是要清空初始化的html,我这答案还真不对.
跟踪了下代码.
主要是在这个函数_setup(编辑器初始化).
if (domUtils.isEmptyNode(me.body)) {
me.body.innerHTML = '<p>' + (browser.ie ? '' : '<br/>') + '</p>';
}
这个me.body来自render函数(渲染编辑器的DOM到指定容器), 里面一段关于iframe代码的.
<body class=\'view\' ></body>
貌似写死了.
艹, 转了一圈,使用以下代码,就可以清空所有初始化内容了.
ueContent.addListener('ready',function(editor){
//editor.setContent("");
ueContent.body.innerHTML = '';
});