Это случается не часто: почему этот код JavaScript не работает только в Chrome? - PullRequest
1 голос
/ 01 декабря 2010

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

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

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Вы можете посмотреть fix для другого форка WMD (строка 32).

0 голосов
/ 01 декабря 2010

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

...