2011-03-12 7 views
2

JavaScriptを使用してコントロール要素をスタイル設定しています。IE8警告:-moz-linear-gradientのJavaScriptによるCSSスタイリング

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

1)jQueryのに関連していることでしょうか? 2)IE8は、グラデーションの背景を想定していません。 – yoavmatchulsky

+0

ねえ..ごめんなさい..Javascriptを使用するように修正されました。また、IE8はグラデーションをサポートしていませんが、私が探しているのは、上のコードのような警告を取り除くことだけです。 – Stoic

+1

'-webkit-'と '-moz-'はIEに完全に無関係です。あなたはそれを知っていますよね? – BoltClock

答えて

2

それがInternet Explorerのだ場合にのみチェックする前に、それらを設定する必要があります。

IEはグラデーションをサポートしていないため、警告が表示されます。

EDIT:

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; 
} 

ソース:IE8の影響についてhttp://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

+0

ええ..私はこれを行う方法を探しています..?私はこれを 'if'でチェックし、それに応じて設定することができるように、いくつかのjQueryやJavaScriptの方法があります。 – Stoic

+0

私はコードを追加しました。 – neebz

1

フィルタを使用。この場合、Gradient Filterが動作するはずです。

例えば、私はあなたがIEをチェックするために、このスニペットを使用することができます青い

.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'); 
} 
+0

はこれを正確に実行しようとしましたが、背景をきれいに描画しますが、警告はIE8で表示されます。 – Stoic

2

でクロスブラウザのグラデーション効果のために、このスタイルを使用します。設定するにはjQueryのを使用して

function isIE() { 
    return (navigator.userAgent.toLowerCase().indexOf("msie")!=-1); 
} 
0

ベタークラス名を入力し、クロスブラウザのグラデーション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]-->