EmberJS を使用して作成された単一ページ アプリがあります。
ページに 3 つのテキストエリアがあります。
textarea が dom に挿入されたら、ckeditor をレンダリングしています。また、ckeditor がレンダリングされたことを記録するコントローラーのプロパティにフラグを立てて、複数回レンダリングしないようにしています。
現在、そこにエディターがいないことを確認するために、dom を調べています。
ページを更新すると、次のエラーがランダムに発生します。
Uncaught TypeError: Cannot call method 'unselectable' of null
何が原因なのか、それを防ぐために今なのかはわかりません。そのエラーがスローされない場合、3 つの ckeditors はすべて正常に表示されます。
エディターの開始コードは次のとおりです。
Lrt.PrioritizationEditableTextArea = Ember.TextArea.extend({
areaVisible: false,
isRendered: false,
isInserted: false,
didInsertElement:function(){
this.set('isInserted', true);
},
renderEditor:function(){
var self = this;
var selfID = self.get('elementId');
if( !this.get('isRendered') && this.get('isInserted') && $('#'+selfID).parent().find('cke').length === 0 ){
var editor = $('#'+selfID).ckeditor({
toolbar:[
{ name: 'document', items:['Source'] },
{ name: 'clipboard', items:['Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']},
{ name: 'editing', items:['scayt']},
{ name: 'basicstyles', items:['Bold', 'Italic', 'Underline', 'TextColor', 'BGColor', '-', 'RemoveFormat']},
{ name: 'styles', items:['FontSize']},
{ name: 'paragraph', items:['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-']}
]
}).editor;
editor.on('change', function(e){
if(e.editor.checkDirty()){
self.set('value', editor.getData());
}
});
this.set('isRendered', true);
}
}.observes('areaVisible')
});
また、ckeditor の「onChange」プラグインを使用して、エディターで何かが変更され、それに応答しているときに「onChange」イベントを発生させています。
私が試したこと:
- onChange プラグインの削除
- ckeditor を 4.3 ベータ版に変更する
- ツールバーのカスタマイズの削除
- onChange イベントリスナーの削除
- レンダリング時にすべてのテキストエリアにコンテンツがあることを確認します
これを修正するにはどうすればよいですか?
編集
スタック トレースは次のとおりです: (アプリで ver 文字列を追加しています)
a (ckeditor.js?ver=2.0.0:291)
(anonymous function) (ckeditor.js?ver=2.0.0:287)
i (ckeditor.js?ver=2.0.0:10)
CKEDITOR.event.CKEDITOR.event.fire (ckeditor.js?ver=2.0.0:12)
CKEDITOR.editor.CKEDITOR.editor.fire (ckeditor.js?ver=2.0.0:13)
CKEDITOR.event.CKEDITOR.event.fireOnce (ckeditor.js?ver=2.0.0:12)
CKEDITOR.editor.CKEDITOR.editor.fireOnce (ckeditor.js?ver=2.0.0:13)
(anonymous function) (ckeditor.js?ver=2.0.0:223)
m (ckeditor.js?ver=2.0.0:203)
CKEDITOR.scriptLoader.load (ckeditor.js?ver=2.0.0:203)
(anonymous function) (ckeditor.js?ver=2.0.0:222)
(anonymous function) (ckeditor.js?ver=2.0.0:210)
(anonymous function) (ckeditor.js?ver=2.0.0:208)
m (ckeditor.js?ver=2.0.0:203)
CKEDITOR.scriptLoader.load (ckeditor.js?ver=2.0.0:203)
CKEDITOR.resourceManager.load (ckeditor.js?ver=2.0.0:207)
h (ckeditor.js?ver=2.0.0:209)
(anonymous function) (ckeditor.js?ver=2.0.0:210)
m (ckeditor.js?ver=2.0.0:220)
(anonymous function) (ckeditor.js?ver=2.0.0:220)
(anonymous function) (ckeditor.js?ver=2.0.0:397)
(anonymous function) (ckeditor.js?ver=2.0.0:208)
m (ckeditor.js?ver=2.0.0:203)
q (ckeditor.js?ver=2.0.0:203)
r (ckeditor.js?ver=2.0.0:203)
(anonymous function) (ckeditor.js?ver=2.0.0:204)
編集#2:
これは、問題が発生しているアプリケーションの特定の領域のフィドルです: http://jsfiddle.net/sSaCd/3/