主题: 通过ajax动态加载的页面中如何嵌入KE?
作者: xiaocase, 发布日期: 2010-02-25 15:14:41, 浏览数: 10742
比如a页面中嵌入了一个KE,页面b中用ajax的方式加载a页面。 这时候访问b页面,发现firefox和IE下都无法工作。
如果把.show方法改成.init然后create的方式。IE8可以工作,但是Firefox还是无法工作,内容无法编辑?
这个是bug?还是有什么特别的解决方案?请指教!
作者: Roddy, 发布日期: 2010-02-25 17:37:09
最好动态加载HTML,HTML加载完后执行JS添加编辑器,不要动态加载HTML和JS。
回复
作者: xiaocase, 发布日期: 2010-02-25 23:05:52
谢谢回复。
如果我没有理解错,我应该是按照你说的方式做的:
我在index.html里面加入了kindeditor.js,然后用jquery动态加载了一个demo.html到一个div (<div id="demoKE"></div>):
$("#demoKE").load("demo.html");
在demo.html里面,是这样写的:
    <textarea id="content2" name="content" style="width:700px;height:200px;visibility:hidden;"></textarea>
                <script type="text/javascript">
                    $(function(){
                      KE.init({
                        id : 'content2'
                      });
                      KE.create('content2');
                    });
                  </script>
如果直接使用KE.show的话,ie和ff都是无法加载的。使用init,然后create的方式,ie8测试可以。ff各种办法都无法编辑。
请作者再加以指点。谢谢!
回复
作者: Roddy, 发布日期: 2010-02-26 09:32:50
demo.html里只写以下代码:
<textarea id="content2" name="content" style="width:700px;height:200px;visibility:hidden;"></textarea>

index.html里动态加载demo.html成功后,执行下面JS。
KE.init({
id : 'content2'
});
KE.create('content2');
回复
作者: xiaocase, 发布日期: 2010-02-26 10:15:31
谢谢指点!
但是还有个问题,如果demo.html中的textarea的id并不知道,也就是说id是根据后台程序动态生成的,而且到底有几个KE也不知道,但是每个textarea都有一个class叫做richtexteditor。
如果使用class来一次性创建多个KE呢?
回复
作者: Roddy, 发布日期: 2010-02-26 11:17:28
目前KE不支持id以外的属性,只能先用class查找所有textarea,取得每个textarea的id,然后根据id生成编辑器。
用jquery代码大概这样,没调试过。
var arr = $('textarea. richtexteditor');
$.each(arr, function() {
    KE.init({id: this.id});
    KE.create(this.id);
});
回复
作者: xiaocase, 发布日期: 2010-02-26 13:51:28
非常感谢。现在看来也只能用这个方式来实现了。如果有问题再请教。
回复
作者: xiaocase, 发布日期: 2010-02-26 22:45:42
经过测试,这种方式确实可以加载成功KE,而且可以编辑。 但是内容无法保存。
不知道是不是要通过什么特殊的方法获取内容呢?请指点!
回复
作者: Roddy, 发布日期: 2010-02-27 09:13:04
提交前要执行一次KE.util.setData('textarea_id');,这样可以把编辑器内容设置到textarea。
回复
发表新帖 发表回复