kindeditor非同步載入時無法顯示編輯框
事情是這樣的,我在A頁面的div通過 jQuery.load() 方法載入一個頁面B時,B頁面帶有編輯框 textarea,現在想讓這個 textarea 顯示為一個 kindeditor的富文字編輯區域,但是怎麼都不能成功,官網上的example根本就跑不起來。(也許是網路原因,或者其他)(官網example:http://kindeditor.net/ke4/examples/dynamic-load.html)
哎,心塞。
但是專案裡已經有好幾個地方都用這個編輯器,就不想換了(這些地方能跑成功的原因是頁面直接呼叫kindeditor,而不是通過非同步載入的方式)。
索性偶然瞥見其他編輯器也有出現這個問題,參考了別人的情況,終於成功實現了。
解決方法:不要在子頁面B呼叫 KindEditor.create() ,而是在主頁面A匯入Editor的js包,在主頁面的$.load() 的回撥函式中建立編輯器。如果要使用編輯器的內容,則咋主頁面設定全域性變數 var editor; 將 KindEditor.create() 賦給 editor 就可以了,子頁面B可以通過 editor.html() 來操作編輯器的內容。
程式碼:
主頁面A.jsp
<script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.7/kindeditor-min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/kindeditor-4.1.7/lang/zh_CN.js"></script>
<div id="mainData" class="mainData">
<div id="dataContent"></div>
</div>
<script type="text/javascript">
var editor; //全域性變數
$("#dataContent").load("B.jsp",function(){
editor = KindEditor.create('textarea[name="modelContent"]', { //這裡的name是子頁面對應的 textarea 的name屬性值
width:'725px',
minHeight:360,
themeType : 'simple',
resizeType : 1,
allowPreviewEmoticons : false,
allowImageUpload : false,
items : [
'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
'insertunorderedlist', '|', 'emoticons', 'image', 'link']
});
});
</script>
子頁面B.jsp
<div id="tempcontent">
<textarea name="modelContent" id="tContent" ></textarea>
</div>
<script type="text/javascript">
editor.html(); //取值
editor.html("Hello!"); //賦值
</script>
附:幫助文件裡的方法,總之我沒用成功,不知道別的情況能不能成功
dynamic-load.html
<!doctype html><html><head><meta charset="utf-8" /><title>Dynamic Load Examples</title><style> form { margin: 0; } textarea { display: block; } </style><script charset="utf-8" src="../lib/jquery.js"></script><script> $(function() { $('input[name=load]').click(function() { $.getScript('../kindeditor-min.js', function() { KindEditor.basePath = '../'; KindEditor.create('textarea[name="content"]'); }); }); $('input[name=remove]').click(function() { KindEditor.remove('textarea[name="content"]'); }); }); </script></head><body><!-- google_ad_client = "ca-pub-7116729301372758"; /* 更多演示(728x90) */ google_ad_slot = "5052271949"; google_ad_width = 728; google_ad_height = 90; //--> </script></script><h3>非同步載入</h3><form></textarea><p><input type="button" name="load" value="載入JS並建立編輯器" /><input type="button" name="remove" value="刪除編輯器" /></p></form></body></html>