Backbone.js IE8 не использует HTML5 tagNames - PullRequest
2 голосов
/ 12 марта 2012

У меня проблемы с тем, что IE8 не стилирует некоторые элементы HTML5 с помощью Backbone.js (0.9.1); проблема возникает только при использовании тега HTML5 для представления, а затем при добавлении элемента представления.

Я использую modernizr и имею соответствующий display: block css, и я могу добавить другие элементы HTML5, используя hQml (), append () и т. Д. JQuery, так что я думаю, что это проблема, связанная с Backbone. *

На данный момент я спорю о том, как обойти это и просто никогда не использовать HTML5 tagNames или больше не использовать Backbone, ни один из которых не является идеальным. Есть предложения?

Вот самый простой пример проблемы:

$(function(){
    var test = Backbone.View.extend({ tagName: 'section' });

    var section = new(test);

    $('body').append(section.el);
}); 

Edit:

По какой-то причине откат от Modernizr 2.5 до 2.0 исправил проблему для Views с HTML5 tagNames, но теперь я должен использовать innerShiv при добавлении содержимого шаблона в элементы. Не уверен, почему он не понравился 2.5, но пока работает.

Попробуем разобраться в этом дальше и посмотреть, смогу ли я сузить причины этого и посмотреть, можно ли найти лучшее решение.

1 Ответ

0 голосов
/ 03 мая 2012

Исходя из моего опыта использования имен тегов, которые не являются стандартными в нетрадиционном браузере (я смотрю на вас, IE), вы должны использовать объявление собственного пространства имен и использовать свой «пользовательский» тег вместе с пространством имен.

Поддержка Windows Internet Explorer пользовательских тегов на странице HTML требует, чтобы для тега было определено пространство имен. В противном случае Пользовательский тег обрабатывается как неизвестный тег при анализе документа.

Вы можете найти исходную статью здесь MSDN

Конечно, объявление собственного пространства имен уже нетривиально, когда дело доходит до написания html. На самом деле, это неслыханно, прежде чем я столкнусь с этой же проблемой. Излишне говорить, что это означает, что у вас будут теги, которые выглядят как <namespace:section>.

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

Альтернативное решение, которое я помню, когда читал, состояло в том, чтобы использовать классы с тем же именем, что и новые теги, которые вы намереваетесь использовать. Например, относитесь к <div class="section"> так же, как к <section>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...