Предупреждение IE8: CSS-стилизация с JavaScript для -moz-linear-Gradient - PullRequest
2 голосов
/ 12 марта 2011

Я использую 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))";
}

Ответы [ 4 ]

2 голосов
/ 12 марта 2011

вы можете использовать этот фрагмент для проверки IE:

function isIE() {
    return (navigator.userAgent.toLowerCase().indexOf("msie")!=-1);
}
2 голосов
/ 12 марта 2011

Вы должны установить их только перед проверкой, если это 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;
}

источник: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

1 голос
/ 12 марта 2011

Используйте фильтры для эффектов 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');
}
0 голосов
/ 02 июля 2012

Лучше использовать 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]-->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...