2013-09-23 11 views
0

我使用JavaScript将.css文件添加到头部,并以最高优先级和最低优先级排序。动态添加css文件到头(IE中的优先级颠倒)

像:

base.css 
theme.css 
responsive.css 

这正常工作与每一个浏览器我已经从IE试图分开(我测试过IE8,9和10),但如果我颠倒顺序:

responsive.css 
theme.css 
base.css 

它在IE浏览器(8,9,10)中工作,但不适用于每个现代浏览器。

有没有IE优先级错误?如果我静态添加没有问题的文件,所以它接缝是一个JavaScript问题,但仅适用于IE。

任何人都知道这个问题,甚至解决方案?

+0

我们可以看到css文件吗?如果它不是媒体查询,那么它应该是在CSS中不被IE支持的东西,它打破了主题。 @ Vincent_Hogendoorn的解决方案看起来不错,但你应该追踪我猜想的问题来源。 尝试通过任何在线验证器验证css文件,它可能会为您提供有关正在发生的事情的线索 – aleation

回答

0

一个解决方案是首先检查与JavaScript使用什么样的浏览器。

BrowserDetect.browser 

而在这之后使用if-else语句..

if(IE){ 
    responsive.css 
    theme.css 
    base.css 
} 
else{ 
    base.css 
    theme.css 
    responsive.css 
} 
+0

我曾考虑过这个问题,但感觉像是最后一招。但仍然是一个解决方案。 反正好的建议。 – gonace

0

这是因为旧版本的IE并不了解媒体查询,这是在响应式设计中,我想你responsive.css你有类似@media screen and (min-width: 960px)的东西。

正常情况下,条件注释用于检测当前浏览器是否为IE(及其版本)并加载css文件。

个人而言,我喜欢移动至上的理念做响应式设计的时候,有一个样品教程:http://gomakethings.com/mobile-first-and-internet-explorer/

这就是所谓的渐进增强。首先为最简单的平台做css,然后为新的浏览器添加一些东西。

如果您想要选项,另一个练习叫做优雅退化,正好相反,它具有全功能的CSS并忽略/删除旧版浏览器的这些功能。

你应该google了一下关于这两个做法,以了解他们更好,如果你真的想这样做清洁和良好的响应式设计

+0

感谢您抽出时间,我可以向您保证,这不是媒体查询不受支持。问题出现在所有版本的IE甚至9和10中。 问题在于主题风格不适用。 – gonace

0

必须有另一种问题的地方,因为IE和其他浏览器不的方式不同他们层叠样式表。请创建一个JSfiddle。

+0

您的意思是IE和其他浏览器在样式表级联方式上没有区别?自从浏览器诞生以来,这就成为了一个问题,所有的黑客都不得不在不同的浏览器中发现类似的CSS效果...... – aleation

+0

是的,但不是因为浏览器如何优先级级联顺序。 –