我使用JavaScript来设置控件元素的样式。
controlText.style.background = "-moz-linear-gradient(center top , #6D8ACC, #7B98D9)";
controlText.style.background = "-webkit-gradient(linear, 0% 0%, 0% 100%, from(#6D8ACC), to(#7B98D9))";
现在,除了在IE8中我收到Invalid argument
警告之外,这个工作正常。
有人可以告诉我,如何修改代码以使IE在没有警告/错误的情况下工作?
问候
尼基尔古普塔
解决方案:谢谢您的输入,我用jQuery.browser.msie
解决了这个问题:
if (jQuery.browser.msie) {
controlText.style.background = "#7B98D9";
} else {
controlText.style.background = "-moz-linear-gradient(center top , #6D8ACC, #7B98D9)";
controlText.style.background = "-webkit-gradient(linear, 0% 0%, 0% 100%, from(#6D8ACC), to(#7B98D9))";
}
答案 0 :(得分:2)
您应该在检查它是否是Internet Explorer之前设置它们。
IE不支持渐变,因此会发出警告。
修改强>
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
来源:http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx
答案 1 :(得分:2)
您可以使用此代码段来检查IE:
function isIE() {
return (navigator.userAgent.toLowerCase().indexOf("msie")!=-1);
}
答案 2 :(得分:1)
对IE8效果使用过滤器。在这种情况下,Gradient Filter
应该有效。
例如,我将此样式用于蓝色的跨浏览器渐变效果
.blue {
color: #d9eef7;
border: solid 1px #0076a3;
background: #ground: -webkit-gradient(linear, left top, left bottom, from(#4A83D6), to(#185498));
background: -moz-linear-gradient(top, #4A83D6, #185498);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4A83D6', endColorstr='#185498');
}
答案 3 :(得分:0)
最好使用jQuery设置类名,并将跨浏览器渐变CSS放在类中。 (保持你的设计与你的代码分开!)
将此页面用于渐变。 http://www.colorzilla.com/gradient-editor/
controlText.addClass('myGrad gradient');
.myGrad{
background: #6d8acc; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzZkOGFjYyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM3Yjk4ZDkiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, #6d8acc 0%, #7b98d9 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6d8acc), color-stop(100%,#7b98d9)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #6d8acc 0%,#7b98d9 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #6d8acc 0%,#7b98d9 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #6d8acc 0%,#7b98d9 100%); /* IE10+ */
background: linear-gradient(to bottom, #6d8acc 0%,#7b98d9 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#6d8acc', endColorstr='#7b98d9',GradientType=0 ); /* IE6-8 */
}
<!--[if gte IE 9]>
<style type="text/css">
.gradient {
filter: none;
}
</style>
<![endif]-->