2012-03-12 3 views
2

IE8에서 Backbone.js (0.9.1)로 특정 HTML5 요소를 스타일링하지 않는 문제가 있습니다. 보기는 HTML5 tagName을 사용하고보기의 요소를 추가 할 때만 문제가 발생합니다.Backbone.js IE8 스타일이 지정되지 않았습니다. HTML5 tagNames

나는 modernizr을 사용하고 있고 적절한 표시를하고 있습니다 : block css, jQuery의 html(), append() 등을 사용하여 다른 HTML5 요소를 추가 할 수 있으므로 백본의 특정 문제라고 생각합니다.

이 시점에서 나는이 문제를 해결하고 더 이상 HTML5 tagNames를 사용하지 않거나 더 이상 백본을 사용하지 않는 것으로 논쟁 중입니다. 둘 다 이상적인 것은 아닙니다. 어떤 제안?

여기에 문제의 간단한 예입니다 :

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

    var section = new(test); 

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

편집 :

HTML5 tagNames와 뷰의 문제를 해결 2.0로 다시 모더 나이저 2.5에서 압연 몇 가지 이유를 들어

,하지만 지금은 사용할 필요가 요소에 템플릿 내용을 추가 할 때 innerShiv. 왜 그것이 2.5를 좋아하지 않았는지 모르지만 그것은 현재 작동합니다.

더 자세히 살펴보고 왜 이런 일이 발생하는지 좁히고 더 나은 해결책을 찾을 수 있는지 확인하십시오.

+0

일반적으로 Backbone.js에 "해결할 수없는"문제가있는 경우 가장 좋은 방법은 소스 코드를 직접 보는 것입니다. 이해하기 쉽습니다. – biziclop

+0

반드시 백본 일 필요는 없습니다. 그게 당신의 템플릿 엔진이 될 가능성이 더 큽니다 (나는 맹세하지는 않겠지 만). – JayC

+1

출처를 확인했습니다. Backbone이 document.createElement (tagName)를 사용하여 DOM 외부에서 요소를 만드는 방법과 관련이 있습니다. 이 문제는 어떤 템플릿 작업과 관련없이 발생하므로 어떻게 문제가 될지 잘 모르겠습니다. 여기에 문제의 간단한 예입니다 :. '$ (함수() { \t VAR 섹션 = 새 (테스트) \t $ ('몸') (섹션을 추가합니다.엘자); }}); VAR 시험 Backbone.View.extend = ({ \t 태그 이름 '부' })' 단면 태그 제거 IE에서 <:section>으로 표시되고; 적절하게 스타일링되지 않았습니다. – topherbullock

답변

0

비 현대적인 브라우저에서 표준이 아닌 태그 이름을 사용하여 얻은 경험에서 (저는 당신을보고 있습니다), 자신의 네임 스페이스를 선언하고 네임 스페이스와 함께 "사용자 정의"태그를 사용해야합니다 .

HTML 페이지의 사용자 지정 태그에 대한 Windows Internet Explorer의 지원 에는 태그에 대한 네임 스페이스가 정의되어 있어야합니다. 그렇지 않으면 문서가 구문 분석 될 때 사용자 지정 태그는 알 수없는 태그로 처리됩니다. 이 HTML을 쓰기에 올 때

당신은 당신의 자신의 네임 스페이스를 선언하는 것은 이미 비 사소한 물론 MSDN

여기에 소스 문서를 찾을 수 있습니다. 사실,이 같은 문제가 발생하기 전에는 전례가 없습니다. 말할 것도없이, 의미는 <namespace:section>과 같은 태그를 사용한다는 것입니다.

IE8을 지원하려면 해결책이 새롭고 멋진 HTML5 html 태그에서 멀리 떨어져 있어야합니다. 또는 IE8에 대해 다른 태그를 사용하도록 코드를 사용자 지정해야합니다.

내가 읽은 또 다른 해결책은 사용하려는 새로운 태그와 같은 이름의 클래스를 사용하는 것입니다. 예를 들어, <div class="section"><section>과 똑같이 취급하십시오.

관련 문제