【发布时间】:2013-01-17 08:22:20
【问题描述】:
我正在这个颜色控制面板上进行试验,用户可以使用控制面板中的幻灯片来更改页面的外观和感觉。一个额外的复杂性是滑入式面板位于父窗口中,而进行更改的页面位于 iframe 内。我希望更改生效,因为它们是在控制面板中进行的。为此,我不想使用 AJAX。为此,我设计了一个算法,它运行良好。
除了 IE8 的问题外,一切正常。加载页面时,我在 css 中默认使用此样式定义。
(感谢 Louis Lazaris - http://coding.smashingmagazine.com/2010/04/28/css3-solutions-for-internet-explorer/)
background-image: -moz-linear-gradient(top, #81a8cb, #4477a1); /* Firefox 3.6 */
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0,#4477a1),color-stop(1, #81a8cb)); /* Safari & Chrome */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#81a8cb', endColorstr='#4477a1'); /* IE6 & IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#81a8cb', endColorstr='#4477a1')"; /* IE8 */
现在这就是我尝试在 javascript 中使用 jQuery 做的事情(hex1 和 hex2 是两个变量,包含两个用于渐变的十六进制值):
jQuery('#iframeId').contents().find('.gradient').css(
{
backgroundImage: '-moz-linear-gradient(top,' + hex1 + ',' + hex2 + ')', /* Firefox 3.6 */
backgroundImage: '-webkit-gradient(linear,left bottom,left top,color-stop(0,' + hex1 + '),color-stop(1,' + hex2 + '))', /* Safari & Chrome */
filter: 'progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=' + hex1 + ', endColorstr=' + hex2 + ')', /* IE6 & IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='" + hex1 + "', endColorstr='" + hex2 + "')" /* IE8 */
});
如果我排除 -ms-filter 的最后一个条件,代码运行良好(因为根据我阅读的文档,如果 jQuery.css 支持此过滤器,则没有提到它)。 对于我看到的问题的一种解决方案是使用
查看我的浏览器的名称和版本navigator.userAgent
如果是“Internet Explorer 8.0”,我会应用单一背景颜色。
现在我的问题是,有没有其他方法可以解决这个问题并在 IE8 上获得渐变?
【问题讨论】:
标签: javascript jquery css internet-explorer-8 gradient