Haml Coffee ie8 error

В настоящее время я использую haml_coffee_assets в проекте с магистралью. Все браузеры, кажется, работают довольно хорошо........ кроме IE8.

Ошибка, которую я получаю: Expected ']' in regular expression

строка, на которую он ссылается, следующая:

 HAML.findAndPreserve = function(text) {
      var tags;
      tags = 'textarea,pre'.split(',').join('|');
      // **THE LINE BELOW** 
      return text = text.replace(RegExp("<(" + tags + ")>([^]*?)<\\/\\1>", "g"), function(str, tag, content) {
        return "<" + tag + ">" + (window.HAML.preserve(content)) + "</" + tag + ">";
      });
    };

Это предотвращает компиляцию всей страницы при загрузке. Связанные с данными div полностью пусты, но все остальные статические элементы загружаются нормально.

1 ответ

Решение

Рассматриваемый RegExp предназначен для сохранения новых строк в определенных тегах путем преобразования их в формат HTML-сущности, поэтому

<pre>Bar
Baz</pre>

становится

<pre>Bar&#x000A;Baz</pre>

Поскольку вы не можете сделать так, чтобы точки совпадали с новыми строками в JavaScript, вы можете использовать пустой согласованный символьный класс, чтобы соответствовать всему. Поскольку мы в браузере, вы можете легко перезаписать HAML.findAndPreserve проверить альтернативные подходы. У меня нет проблем с его изменением для IE8, но я отказываюсь устанавливать виртуальную машину только для того, чтобы протестировать ее:-)

Альтернатива [^] является [\s\S] и я успешно протестировал его в Node.js, изменив соответствующий код в Haml Coffee, и все спецификации проходят нормально. Можете ли вы попробовать это в IE8 и сообщить, если это верно и работает? Спасибо!

Другие вопросы по тегам