search

Home  >  Q&A  >  body text

ueditor - javascript 是否存在函数引用传递?

需求:百度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

PHPzPHPz2894 days ago569

reply all(2)I'll reply

  • 大家讲道理

    大家讲道理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) });
      
    • 第三个问题,我也不知道

    reply
    0
  • PHP中文网

    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 = '';
    });
    

    reply
    0
  • Cancelreply