主题: 通过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。
|
回复 |