2015-03-19 3 views
6

की संपत्ति 'setAttribute' नहीं पढ़ सकता है, इसलिए मैं एक एमवीसी साइट बना रहा हूं जिसके लिए एक HTML इनपुट बॉक्स की आवश्यकता है। मेरे पास एक टेक्स्ट क्षेत्र है जो AJAX संवाद विंडो से लोड होता है। मैं समझता हूं कि जब मैं संवाद छुपाता हूं तो TinyMCE को नियंत्रण हटाने की आवश्यकता होती है, यह ठीक है।TinyMCE -> शून्य

हालांकि मैं संपादक को बिल्कुल लोड नहीं कर सकता। मैं jquery मॉड्यूल के साथ संस्करण 4.1.9 (2015-03-10) का उपयोग कर रहा हूँ। यानी दोनों tinymce.jquery.js & jquery.tinymce.min.js

एक बार संवाद विंडो खोला जाने के बाद मैं इसे कॉल करता हूं;

$("textarea").tinymce({ 
    // General options 
    mode: "textareas", 
    theme: "modern", 
    // Theme options 
    menubar: false, 
    toolbar: "bold,italic,underline,|,bullist,numlist", 
    statusbar: false, 
    init_instance_callback: function (editor) { 
     console.log("tinymce init: " + editor.id); 
    } 
}); 

लेकिन मैं निम्न विधि में जावास्क्रिप्ट में एक अपवाद मिलता है, ऐसा लगता है self.ariaTarget लाइन elm.setAttribute नाकाम रहने क्योंकि एल्म रिक्त है शुरू करने के लिए अग्रणी अनिर्धारित रहता है।
मुझे समझ में नहीं आता कि मैंने क्या गलत किया है।

/** 
* Sets the specified aria property. 
* 
* @method aria 
* @param {String} name Name of the aria property to set. 
* @param {String} value Value of the aria property. 
* @return {tinymce.ui.Control} Current control instance. 
*/ 
aria: function(name, value) { 
    var self = this, elm = self.getEl(self.ariaTarget); 
     if (typeof value === "undefined") { 
     return self._aria[name]; 
    } else { 
     self._aria[name] = value; 
    } 
     if (self._rendered) { 
     elm.setAttribute(name == 'role' ? name : 'aria-' + name, value); 
    } 
     return self; 
}, 

सहायता के लिए धन्यवाद।
मार्क

संपादित करें:
मैं दस्तावेज़ के साथ में लोड हो रहा है TinyMCE के बजाय इस jsfiddle http://jsfiddle.net/thomi_ch/m0aLmh3n/19/ निम्नलिखित किया गया है, यह एक url से लोड करता है जब यह initialises (नीचे देखें)। मैंने उदाहरण के रूप में एक ही script_url का उपयोग करने के लिए अपना कोड बदल दिया है और यह संपादक को प्रस्तुत करने के लिए काम करता है (गायब आइकन आदि जैसे सीएसएस नहीं मिल सकता है) लेकिन यह मेरा तात्पर्य है कि मेरे tinymce.jquery के संस्करण में कुछ गड़बड़ है .js फ़ाइल।

$('textarea').tinymce({ 
    script_url : 'http://demo.nilooma.com/system/plugins/tinymce/4.1.6/tiny_mce/tinymce.gzip.php', 
    toolbar: 'link', 
    plugins: 'link', 
    forced_root_block : '', 
    init_instance_callback: function(editor) { 
     console.log('tinymce init: '+editor.id); 
    } 
}); 

मैं संस्करणों 4.1.9 & jsfiddle का उपयोग करता है के रूप में 4.1.6 और सभी संयोजनों मुझे एक ही त्रुटि से दोनों tinymce.jquery.js & tinymce.js कोशिश की है।
क्या यह संभव है कि किसी अन्य लाइब्रेरी के साथ असंगतता हो?

उत्तर

7

मुझे इस मुद्दे पर एक प्रस्ताव मिला। मेरा मानना ​​है कि यह तत्व को कई बार शुरू करने की कोशिश कर रहा था, और इसके बाद मुझे यह भी एक दोष मिला कि तत्व संपादक को प्रदर्शित नहीं कर रहा था क्योंकि इसे छुपाया गया था जब इसे प्रारंभ किया गया था।

कोड जो मैंने बूटस्ट्रैप मोडल प्रारंभ करने के लिए उपयोग किया है यह है;

$("#myModal").modal({ 
    keyboard: true 
}, "show"); 

//Bind open 
$("#myModal").on("show.bs.modal", function() { 
    $(document).trigger("DialogLoaded"); 
}); 
//Bind close 
$("#myModal").on("hidden.bs.modal", function() { 
    $(document).trigger("DialogClosed"); 
}); 

तब मैं दस्तावेज़ पर घटनाओं को सुनता हूं;

tinyMCE.init({ 
    // General options 
    mode: "textareas", 
    theme: "modern", 
    // Theme options 
    menubar: false, 
    toolbar: "bold,italic,underline,|,bullist,numlist", 
    statusbar: false, 
    init_instance_callback: function(editor) { 
     console.log("tinymce init: " + editor.id); 
    } 
}); 

$(document).on("DialogLoaded", function() { 
    var textAreas = $("textarea", $("#myModal")); 
    for (var i = 0; i < textAreas.length; i++) { 
     //Check if element already has editor enabled 
     if (tinymce.get(textAreas[i].id)) { 
      //Remove existing editor 
      tinyMCE.execCommand("mceRemoveEditor", false, textAreas[i].id); 
     } 

     //Add editor 
     tinyMCE.execCommand("mceAddEditor", false, textAreas[i].id); 
    } 
}); 

$(document).on("DialogClosed", function() { 
    //Remove all editors in dialog 
    var textAreas = $("textarea", $("#myModal")); 
    for (var i = 0; i < textAreas.length; i++) { 
     //Check if element already has editor enabled 
     if (tinymce.get(textAreas[i].id)) 
      tinyMCE.execCommand("mceRemoveEditor", false, textAreas[i].id); 
    } 
}); 

मुझे लगता है कि याद रखने के लिए कई बिंदु हैं;

  • दिखाई तत्वों
  • आरंभ tinyMCE पहले
  • सुनिश्चित करें पर केवल लोड tinyMCE अपने ही प्रत्येक तत्व एक बार
  • सुनिश्चित करें कि प्रत्येक पाठ क्षेत्र में एक विशिष्ट आईडी है (और हटाने यह एक बार छिपा हुआ)
भरी हुई

मुझे आशा है कि इससे किसी अन्य व्यक्ति को TinyMCE के साथ कोई समस्या हो सकती है।

धन्यवाद,
मार्क।

+2

मुझे इस मुद्दे का सामना करना पड़ रहा है मैंने कोशिश की है। यह हल नहीं किया गया है। मैंने वेब पेज में चेक किया है। मैंने किसी भी संवाद बॉक्स का उपयोग नहीं किया है। क्या मैं जान सकता हूं कि मैं इस मुद्दे को कैसे हल कर सकता हूं? –