Исправление ошибки ThickBox в IE7 и IE8

Столкнулись с ошибкой компонента ThickBox в браузерах IE7 и выше. Проблема заключается в том, что фреймворк JQuery не всегда корректно определяет версию браузера (точнее это связано с DTD типом документа - сильно в источник проблемы не вдавался), из-за чего неправильно срабатывает функция ThickBox (строки 282-287):

function tb_position() {
  $("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
  if ( !if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
    $("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
  }
}

В результате всплывающее окно в IE7 и IE8 позиционируется неправильно.

Ошибка заключается в том, что в некоторых случаях jQuery.browser.version возвращает некорректный результат и браузер ошибочно определяется как IE6.

Для исправления ошибки надо более точно определять версию браузера. Для этого введем дополнительный параметр:

$.browser.msie6 = $.browser.msie
    && /MSIE 6\.0/i.test(window.navigator.userAgent) 
    && !/MSIE 7\.0/i.test(window.navigator.userAgent) 
    && !/MSIE 8\.0/i.test(window.navigator.userAgent);

Он будет определять является ли браузер - IE6.

Таким образом исправленная функция tb_position() будет выглядеть следующим образом:

function tb_position() {
  $("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
  $.browser.msie6 = $.browser.msie && /MSIE 6\.0/i.test(window.navigator.userAgent) && !/MSIE 7\.0/i.test(window.navigator.userAgent) && !/MSIE 8\.0/i.test(window.navigator.userAgent);
  if ( !(jQuery.browser.msie6)) { // take away IE6
    $("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
  }
}

Источник сведений

 

Возврат к списку новостей

Оставить свой комментарий

От кого:
E-mail (не показывается):
WWW:
Текст: