هذا لا يحدث في كثير من الأحيان: لماذا يتم كسر رمز JavaScript هذا فقط في الكروم؟
-
29-09-2019 - |
سؤال
لقد قررت أنني وقعت في حالة حب مع محرر Markdown على Stack Overflow. إنه شوكة من showdown.js
من جون فريزر. أرغب في استخدام هذا المحلل في مشروع لي ، لكن بعد تحليل المصدر ، وجدت أنه كان فوضويًا بعض الشيء لذوقي.
لذلك بدأت في تعديل رمز JavaScript لتلبية احتياجاتي ، وهي:
- التخلص من جميع المتغيرات العالمية ،
- الجمع بين التصريحات المتغيرة إلى واحدة
var
لكل نطاق ، - تغيير التسلسل إلى صفيف ينضم ،
- تعديلات أخرى مختلفة تهدف إلى جعل المصدر المصغر أصغر.
لقد عملت كل شيء بشكل جميل ، باستثناء مشكلة صغيرة واحدة: الرمز الإكمال التلقائي في command.doList
الوظيفة متزعزع في الكروم. لقد اختبرت كل شيء للعمل بشكل صحيح في Internet Explorer و Firefox و Safari. لقد عزلت الأمر وصولاً إلى الأسطر التالية:
// Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted
// list.
getItemPrefix = function () {
var prefix;
if (isNumberedList) {
// the `s` variable is just a string space.
prefix = [s, num, '. '].join('');
num++;
} else {
prefix = [s, bullet, s].join('');
}
return prefix;
};
// Fixes the prefixes of the other list items.
getPrefixedItem = function (itemText) {
// The numbering flag is unset when called by autoindent.
if (isNumberedList === undefined) {
isNumberedList = /^\s*\d/.test(itemText);
}
// Renumber/bullet the list element.
// THE FOLLOWING LINES COMMENTED OUT TO FIX A BUG.
//itemText = itemText.replace(/^[ ]{0,3}([\*\+\-]|\d+[.])\s/gm,
// function () { return getItemPrefix(); });
return itemText;
};
علق الخطان الذي علق بالقرب من النهاية على Chrome من تصرف متزعزع ، لكن قوائم مرقمة لم تعد تلقائيًا. بمجرد إلغاء تعبير الخطوط ، تبدأ جميع المتصفحات الرئيسية في العمل بشكل طبيعي ، باستثناء Chrome. (يصبح Chrome مجنونًا ويكمل القائمة مع ترقيم ورصاص إضافي ، يحدث أيضًا عند محاولة استخدام قائمة غير مرتبة).
من الواضح أن المشكلة غير موجودة هنا على Stack Overflow ، لذلك آمل أن تكون مجرد إشراف غبي من جانبي. (إما ذلك أو فائض المكدس قام بتحديث الخلل وإصلاحه.)
المحلول
يمكنك إلقاء نظرة على يصلح لشوكة WMD أخرى (السطر 32).
نصائح أخرى
يجب ألا تحتاج إلى التراجع عن *+- بين قوسين مربع ، هل يجب عليك؟ قد يكون هذا ما يواجهه Chrome مشاكل.