我遇到了IE8没有使用Backbone.js (0.9.1)设置某些HTML5元素的样式的问题;这个问题只在对视图使用HTML5 tagName,然后附加视图的元素时才会出现。
我使用了现代版,并使用了适当的display:block css,我还可以使用jQuery的html(),append()等添加其他HTML5元素,所以这让我觉得这是一个主干特有的问题。
在这一点上,我正在讨论解决这个问题,或者根本不使用HTML5 tagNames,或者不再使用Backbone,这两者都不是理想的。有什么建议吗?
下面是这个问题最简单的例子:
$(function(){
var test = Backbone.View.extend({ tagName: 'section' });
var section = new(test);
$('body').append(section.el);
}); 编辑:
由于某种原因,从Modelnizr2.5回滚到2.0修复了HTML5 tagNames的视图问题,但现在在将模板内容添加到元素时,我必须使用innerShiv。不知道为什么它不喜欢2.5,但它现在可以用了。
我将进一步调查,看看我是否可以缩小为什么会发生这种情况,看看是否可以找到更好的解决方案。
发布于 2012-05-04 02:16:30
根据我在非现代浏览器中使用非标准标记名的经验(我看着你,IE),你必须声明你自己的命名空间,并使用你的“自定义”标记和你的命名空间。
HTML Explorer对
页面上的自定义标记的支持要求为标记定义一个命名空间。否则,在解析文档时,自定义标记将被视为未知标记。
您可以在MSDN中找到源代码文章
当然,在编写html时,声明自己的名称空间已经不是一件容易的事情。事实上,在我遇到同样的问题之前,这是闻所未闻的。不用说,这意味着您将拥有看起来像<namespace:section>的标记。
如果您要支持IE8,那么您的解决方案将是要么远离新的花哨的HTML5 html标签,要么定制您的代码为IE8使用不同的标签。
我记得读过的另一种解决方案是使用与您打算使用的新标记同名的类。例如,像对待<section>一样对待<div class="section">。
https://stackoverflow.com/questions/9669764
复制相似问题