IE9 Javascript ошибка - PullRequest
       4

IE9 Javascript ошибка

0 голосов
/ 25 апреля 2011

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

var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);
var li = document.createElement('li');
li.style.fontSize = fs+'px';

Странно то, что всеработает нормально, если удалить тег совместимости:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/> 

Но я не могу этого сделать, или мое непрозрачное окно становится черным из-за другого скрипта (см. Отключение ieretrofit.js в Blogger ).

Может ли кто-нибудь помочь мне исправить это?

ps: Поскольку это не работает, я скрыл облако тегов с помощью следующего фрагмента JQuery (хромает, я знаю).

$(document).ready(function(){
  if ($.browser.msie ) {
    $("#Label1").hide();
  }
});

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011

Разобрался. Метод s иногда возвращал NaN (что по какой-то причине вызывало проблемы только с IE в режиме совместимости). Я исправил это с помощью метода isNaN следующим образом:

if (!isNaN(fs)) {
  li.style.fontSize = fs+'px';
 }

И еще одно редактирование:

if (!isNaN(c[0]) && !isNaN(c[1]) && !isNaN(c[2])) {
  a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')';
}

Это относится к этому коду и нескольким вариантам.

0 голосов
/ 25 апреля 2011

Вы столкнулись с конкретной ошибкой IE7.

Проверьте это:

http://bugs.jquery.com/ticket/4670

Ух, хорошая ошибка.Это не ошибка JQuery, хотя.Вы можете воспроизвести его с голыми функциями DOM:

var li = document.createElement ("li");
li.value = "12";

IE7 немедленно падает в MSHTML.DLL, пытаясь получить доступ к адресу памяти 0x00000000.Тот же сбой происходит с li.setAttribute («value», «12»).Поскольку (по крайней мере в HTML4) значение элемента

применяется только в том случае, если он является дочерним по отношению к элементу
...