Это не часто случается: почему этот код JavaScript нарушается только в Chrome?

StackOverflow https://stackoverflow.com/questions/4321325

Вопрос

Я решил, что влюбился в редактор Markdown в Stack Overflow. Это вилка от showdown.js от Джона Фрейзера. Я хочу использовать этот анализатор в своем проекте, но после анализа источника я обнаружил, что это было немного грязно на мой вкус.

Поэтому я приступил к изменению кода JavaScript для удовлетворения моих потребностей, а именно:

  1. Избавиться от всех глобальных переменных,
  2. Объединение объявлений переменной с одним var за область,
  3. Изменение конкатенации на массив присоединяется,
  4. Различные другие изменения, предназначенные для того, чтобы сделать мини -источник меньше.

У меня все работает красиво, за исключением одной небольшой проблемы: автозаполнять код в command.doList Функция ухожена в Chrome. Я проверил все, чтобы правильно работать в 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 соходит с ума и автоматически заполняет список с дополнительной нумерацией и пулями, также происходит при попытке использовать неупорядоченный список.)

Проблема, очевидно, не существует здесь На переполнении стека, так что я надеюсь, что это просто глупый контроль с моей стороны. (Либо это или переполнение стека обновило и исправила ошибку.)

Это было полезно?

Решение

Вы можете посмотреть на исправить Для другой вилки из ОМБ (строка 32).

Другие советы

Вам не нужно отступать *+- в квадратных скобках, не так ли? Это может быть то, с чем у Chrome проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top