2015-02-25 2 views
0

Проблема заключается в том, что IE (9-edge) блокирует только одну часть моего javascript, который устанавливается. Хотя я могу отказаться от настроек безопасности, чтобы отобразить желаемый эффект, я не могу попросить пользователей сделать то же самое. Я уверен, что здесь что-то отсутствует, так как остальная часть кода отображается правильно.IE не отображает цвет фона на div

$.each(data.results.audio, function(key, val) { 
    var replace = val.mp3Url.replace('&', '&'); 

    if (val.imgUrl) { 
     status = "style='background:"; 
     switch (val.roadCondition) { 
     case "1": 
      status += "#4CAF50'"; // green 
      break; 
     case "2": 
      status += "#FFEB3B'"; // yellow 
      break; 
     case "3": 
      status += "#D32F2F'"; // red 
      break 
     case "4": 
      status += "black'"; // black 
      break; 
     default: 
      status += "white'"; // white 
     } 
    } 

    var items2 = "<div class='bt_icon z-depth-5 hvr-round-corners'" + status + "><p class='shine waves-effect waves-green hvr-round-corners'><img id='" + key + "' class='majors ' src='" + val.imgUrl + "' alt='" + val.name + "' title='" + val.name + "' data-audio='" + replace + "' /></p></div>"; 
    $("#button_icons").append(items2); 
    if (first && !isDone) { 
     isDone = true; 
     var audio = document.querySelector("audio"); 
     audio.src = replace; 
     audio.load(); 
    } 

    items.push(items2); 

}); 

ПРИМЕЧАНИЕ: фоновый цвет имеет тот же эффект.

Остальная часть кода работает отлично, за исключением того, что переменная «статус» устанавливается. Chrome, Firefox и Safari отображаются правильно. Но в IE кажется, что вышеупомянутый «статус» код никогда не вводится. Он не отображается в dom в инструментах dev. Единственный способ получить весь код для показа - это сбросить настройки безопасности на носитель и перезагрузить страницу. Любые объяснения/исправления?

+0

возможно потребности IE двойные кавычки вокруг значения атрибутов для их применения. –

+0

Результат интерпретируется как двойная кавычка. По крайней мере, насколько я знаю в DOM хром, firefox и Safari. Но хорошая мысль. – messif

+1

класс и стиль (которые не должны быть встроены ...) касаются друг друга без промежутка между ними. Это, безусловно, достаточно, чтобы выбить IE. –

ответ

0

Оказывается, ответ был указан в метатеге для совместимости с IE. Когда IE запускает небезопасное содержимое интрасети, он по умолчанию переходит в режим совместимости. Это то, что я имел:

<meta http-equiv="X-UA-Compatible" content="IE=EDGE; IE=9; IE=8"/> 

Это то, что я изменил его:

<meta http-equiv="X-UA-Compatible" content="IE=EDGE"/> 

Существует большое объяснение, почему это было причиной моего вопроса здесь: IE Compatibility Mode: 'X-UA-Compatible' tag 'Edge'

+0

То, что меня достало несколько раз, заводит меня орехами. –

Смежные вопросы