如何仅使用javascript用IE8及更低版本的CSS文件替换或删除任何特定的CSS属性?

如何仅使用javascript用IE8及更低版本的CSS文件替换或删除任何特定的CSS属性?,javascript,jquery,css,internet-explorer,Javascript,Jquery,Css,Internet Explorer,这是css代码,我只想要IE8和更低版本的 background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */ 但如果用户在IE9上,我要么想从CSS文件中删除此属性,要么想用filter:none 可以使用javascript、jquery吗?我知道我可以为IE使用单独的样式表,但我

这是css代码,我只想要IE8和更低版本的

background: filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); / IE6-8 */
但如果用户在IE9上,我要么想从CSS文件中删除此属性,要么想用
filter:none

可以使用javascript、jquery吗?我知道我可以为IE使用单独的样式表,但我只是好奇是否可以使用javascript

编辑:

是否可能像javascript或jquery中那样

// If browser is IE9 
然后替换

filter:progid:DXImageTransform.Microsoft.gradient(值)


要过滤:无

使用条件注释并为IE8和更低版本添加css文件

编辑:使用javascript并应用css

使用
jQuery.browser.version
可以获得版本

使用条件注释并为IE8和更低版本添加css文件

编辑:使用javascript并应用css

使用
jQuery.browser.version
可以获得版本

我认为最简单的方法是使用条件代码在HTML元素上添加一个“IE”类。。。我想我最初是从HTML5样板中得到的

过滤器不会由非IE浏览器呈现,因此为除IE6-8之外的所有浏览器添加或删除过滤器与仅为IE9添加或删除过滤器的效果相同。我还认为ie9支持多个后台属性,所以其他浏览器应该跳过第一个逗号分隔的值——理论上——我还没有测试过它。如果不是,请使用常规css2语法:

.bg-gradient {background: filter: 0}

我认为最简单的方法是使用条件代码在HTML元素上放置一个“IE”类。。。我想我最初是从HTML5样板中得到的

过滤器不会由非IE浏览器呈现,因此为除IE6-8之外的所有浏览器添加或删除过滤器与仅为IE9添加或删除过滤器的效果相同。我还认为ie9支持多个后台属性,所以其他浏览器应该跳过第一个逗号分隔的值——理论上——我还没有测试过它。如果不是,请使用常规css2语法:

.bg-gradient {background: filter: 0}
$(文档).ready(函数(){
如果($.browser.msie&&$.browser.version<9){
$(“#元素”).css(“过滤器”、“progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799',endColorstr='#7db9e8',GradientType=0);)
}
})
$(文档).ready(函数(){
if($.browser.msie&$.browser.version<9){
$(“#元素”).css(“过滤器”、“progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799',endColorstr='#7db9e8',GradientType=0);)
}
})

我发现这里有不同的答案,但我个人会建议以下方法

有两个CSS类-一个包含IE9的样式,另一个包含所有其他浏览器的样式

如上所述,使用jQuery.browser API确定浏览器类型。 我建议您将这个字符串(比如“msie9”或“msie8”)作为类添加到“body”或“html”元素中

完成此操作后,IE9的样式将

body.msie9.ie9specificclass{ }

对其他人来说,它将是

.特殊类别{ }


这将是一个干净的方法。

我看到这里有不同的答案,但我个人会建议以下方法

有两个CSS类-一个包含IE9的样式,另一个包含所有其他浏览器的样式

如上所述,使用jQuery.browser API确定浏览器类型。 我建议您将这个字符串(比如“msie9”或“msie8”)作为类添加到“body”或“html”元素中

完成此操作后,IE9的样式将

body.msie9.ie9specificclass{ }

对其他人来说,它将是

.特殊类别{ }

这将是一个干净的方法。

是的。它在JavaScript中是“可能的”。但是它需要在服务器端和客户端同时完成

在客户端,您需要检测它是否是IE9,然后向服务器发送脚本请求(服务器端JavaScript),该脚本解析CSS文件并替换所有出现的过滤器属性,并将其设置为
filter:none
,然后将修改后的CSS文件提供给客户端

附言:这将是你能做的最糟糕的事情,我不推荐。这只是为了回答您的好奇问题,如果这在JavaScript中是“可能的”。

是的。它在JavaScript中是“可能的”。但是它需要在服务器端和客户端同时完成

在客户端,您需要检测它是否是IE9,然后向服务器发送脚本请求(服务器端JavaScript),该脚本解析CSS文件并替换所有出现的过滤器属性,并将其设置为
filter:none
,然后将修改后的CSS文件提供给客户端


附言:这将是你能做的最糟糕的事情,我不推荐。这只是为了回答您的好奇问题,如果这“在JavaScript中是可能的”.

我想做的是,如果用户在IE9上打开网页,javascript代码应该检测css中的
过滤器:progid:DXImageTransform.Microsoft.gradient*
,并替换为
过滤器:无
,所以你想用javascript解析css文件?我想说这是答案,但有几个突出的细节。“低于IE9”是一个永远不需要修改的问题。他应该这样做,而不是认为“IE9”就足够了。另外,等待document.ready要求闪烁。他最好在标签后面立即放置标签,并将CSS类添加到正文而不是HTML将避免出现此问题。我要做的是,如果用户在IE9上打开网页,javascript代码应该在CSS中检测
filter:progid:DXImageTransform.Microsoft.gradient*
并替换为
filter:none
so您想要解析一个
.bg-gradient {background: filter: 0}
$(document).ready(function(){
    if ($.browser.msie && $.browser.version < 9) {
         $("#element").css("filter", "progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );")
    }
})