रेडैक्टर संपादक के पुराने संस्करण को डीबग करते समय हमें एक बहुत ही मुश्किल मामला मिला है। दो शब्दों में, चयन श्रेणी से span
नोड को हटाने से क्रोम v60 में execCommand
का गलत व्यवहार होता है, हालांकि फ़ायरफ़ॉक्स और क्रोम v58 में यह सही तरीके से काम कर रहा था।ExecCommand चयन सीमा से नोड को हटाने के बाद क्रोम 60 में गलत तरीके से काम करता है
यहां समस्या का पुनरुत्पादन करने वाला पहेली है: https://jsfiddle.net/47wqpv1f/4/।
एक शब्द का चयन करें और बटन दबाएं। आप यहां देख सकते हैं कि फ़ायरफ़ॉक्स और क्रोम 58 टेक्स्ट में क्रोम 60 के दौरान स्ट्रोक हो जाएगा, यह बिना छूटे रहेंगे।
स्वरूपण क्रिया पर, उदा। बोल्ड, संपादक दो अलग-अलग "मार्कर" तत्वों के साथ चयन सीमा को घेरता है।
var range2 = range.cloneRange();
var marker = document.createElement('span');
marker.id="selection-marker-1";
marker.className="redactor-selection-marker";
marker.innerHTML = markerHTML;
range2.collapse(true);
range2.insertNode(marker);
फिर संपादक चयन के साथ कुछ जोड़ता है, और उसके बाद मार्कर सीमाओं से मेल खाने के लिए चयन को रीसेट करता है।
range.setStart(document.getElementById('selection-marker-1'), 0);
range.setEnd(document.getElementById('selection-marker-2'), 0);
उसके बाद संपादक मार्कर नोड्स, जो विचार से मूल चयन की रक्षा करना चाहिए निकाल देता है।
marker.parentNode.removeChild(marker);
marker2.parentNode.removeChild(marker2);
इसके बाद, संपादक स्वरूपण प्रक्रिया के अगले चरण के लिए फिर से मार्कर कहते हैं, और उसके बाद के माध्यम से हड़ताल के लिए execCommand
करता है।
क्रोम 60 केवल बाएं मार्कर पर strike
टैग जोड़ देगा, जबकि अन्य उल्लिखित ब्राउज़र पूरे चयन के आसपास strike
लपेटेंगे (जो इस मामले में मेरे लिए अपेक्षित व्यवहार है)।
मैं यहां विभिन्न कामकाजों के बारे में सोच सकता हूं लेकिन नए क्रोम में व्यवहार बदलने का वास्तविक कारण क्या है?
इसे आमतौर पर [एक बग] (https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Leptoglossus_occidentalis_g3.jpg/800px-Leptoglossus_occidentalis_g3.jpg) के रूप में जाना जाता है। बहुत से सॉफ़्टवेयर में यह है, और इन्हें संबोधित करने के लिए, कुछ कंपनियां अपने उपयोगकर्ताओं को इसके बारे में स्वीकार करने के लिए ट्रैकिंग-टूल्स का उपयोग करती हैं, और आखिरकार इन से छुटकारा पाने का प्रयास करती हैं। आपके द्वारा इस नमूने में मिले सॉफ़्टवेयर की डेवलपर टीम [यह टूल] (http://chromiumbugs.appspot.com/) है, जो आपके लिए खुली है। – Kaiido