2010-08-19 14 views
6

मेरे समस्या यह है कि मैं jQuery के लिए CKEditor 3.4 प्लगइन का उपयोग कर रहा है, और यह मुझे IE 7 + 8 में एक त्रुटि दे रही है, जब एक $ (चयनकर्ता) को क्रियान्वित है।CKEditor + IE7 + 8 'अशक्त या नहीं एक वस्तु' त्रुटि

त्रुटि: वैल (html) संपादक पर कॉल '।। इस $ innerHTML' रिक्त है या नहीं एक वस्तु

... जो जब डीबगर में चलाने के लिए, कोड की इस पंक्ति को इंगित करता है

getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;} 

... जो स्रोत में इस के लिए अनुवाद: विशाल CKEditor.js में

getHtml : function() 
{ 
    var retval = this.$.innerHTML; 
    // Strip <?xml:namespace> tags in IE. (#3341). 
    return CKEDITOR.env.ie ? retval.replace(/<\?[^>]*>/g, '') : retval; 
}, 

मेरे अपमानजनक कोड (नीचे छीन लिया, लेकिन अभी भी त्रुटि है):

var editor_data = $("textarea#body").val(); 
$("textarea#body").val(editor_data); 

... और भावी पीढ़ी के लिए पाठ क्षेत्र कोड:

<textarea name="body" rows="15" cols="50" class="wysiwyg" id="body"></textarea> 

मैं कोशिश की है प्रजनन आईई 8 में jsFiddle में, लेकिन अजीब बात यह है कि यह वहां के रूप में काम करता है। मुझे एक कामकाजी नमूना भी प्रदान करना अच्छा लगेगा लेकिन दुर्भाग्य से मैं अपने नियंत्रण के बाहर कारणों के लिए नहीं कर सकता।

मैं भी यह सुधार की कोशिश की है, और यह त्रुटि मुद्दे को मंजूरी दे दी है, लेकिन उस setData के बाद के रूप में इरादा है और बस कुछ भी नहीं के साथ संपादक सामग्री को ओवरराइट कर काम नहीं किया। मैं मानता हूँ इस समस्या + फिक्स मेरे सिर पर एक सा है ...: http://dev.ckeditor.com/ticket/4566

(माफ करना, लंबे समय तक पद: एस) मैं भी (jQuery एकीकरण को छोड़) CKEditor में प्रत्यक्ष जावास्क्रिप्ट एपीआई का उपयोग करने की कोशिश की है और यह एक ही त्रुटि फेंक दिया।

किसी को भी कुछ भी वे मेरे लिए करना चाहते हैं इस समस्या को हल है, या यह क्या हो सकता है की किसी भी hunches की कोशिश करने के लिए है? यह बहुत सराहनीय होगा!

उत्तर

3

व्यक्तिगत रूप से मैं मौजूदा उत्तर का प्रशंसक नहीं हूं जिसमें स्रोत कोड को संशोधित करना शामिल है क्योंकि जैसे ही आप ckEditor को अपडेट करते हैं, तो आपको फिर से स्रोत को संशोधित करना याद रखना होगा। मैं मूल पोस्टर के रूप में एक ही समस्या हो रही थी और एक ठीक है कि एक हैक माना जाता है पाया है, लेकिन पूरी तरह से प्रयोग करने योग्य। बस, एक कोशिश/पकड़ ने आईई 8 में यह सब अच्छा और खुश कर दिया। अब आईई 7 में परीक्षण करने के लिए। यह सुधार के अन्य बोनस है कि आप खाली डेटा के साथ जब यह विफल छोड़ दिया नहीं कर रहे हैं, लेकिन आप वास्तविक सामग्री आप प्राप्त करने का प्रयास कर रहे थे प्राप्त है।

var editor = $('textarea.editor').ckeditorGet(); 
var vPageContent = ""; 
try{ 
    vPageContent = editor.getData();//function call fails here 
} catch(err){ 
    vPageContent = editor.getData();//but will work here 
} 
+0

ग्रेट सॉल्यूशन! – mmoriar1

1

सबसे अच्छा समाधान नहीं हो सकता है लेकिन इस पर एक नज़र ले सकता है: http://dev.ckeditor.com/ticket/4566

उसका दावा है कि

getHtml:function(){return (this.$) ? this.$.innerHTML : "";}, 

साथ

getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;}, 

की जगह समस्या का समाधान होगा।

मैं दावा नहीं कर रहा हूं कि यह सही जवाब है लेकिन मुझे आज भी यही समस्या थी और (अभी के लिए) यह काम प्रतीत होता है।

+0

हाय अतिरिक्त अल्पविराम के लिए अपने कोड की जांच कर सकते हैं!मैंने कोशिश की और यह त्रुटि को सही किया। हालांकि, यह मेरी सामग्री को कुछ भी नहीं छोड़ता है (जो समझ में आता है कि यह ठीक है)। चूंकि यह $ झूठी लौट रहा था, getHtml() खाली स्ट्रिंग लौट रहा था, यही कारण है कि सामग्री ओवरराइट की जा रही थी। क्या आप इसे भी देख रहे हैं? क्या कोई ऐसा पृष्ठ है जिसे मैं देख सकता हूं और शायद कुछ जानकारी प्राप्त कर सकता हूं? धन्यवाद! – mmoriar1

1

अतिरिक्त कॉमा से सावधान रहें। आईई को अतिरिक्त कॉमा पसंद नहीं है। आप के साथ json lint

+1

यह मेरे लिए था, बहुत परेशान! –

संबंधित मुद्दे