Обработка ошибок JQuery / CSS в IE - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть код для максимизации видео панели при загрузке / изменении размера страницы. Я использую JQuery 1.4.4, и все отлично работает в Chrome, Firefox и Safari. Следуя некоторым примерам из других постов, я настраиваю размер панели видео на основе размера рендеринга и стиля других элементов на экране.

function maximizeVideo(){
  var play_height = $(window).height()-42;
  var play_width = $PLAY.width() - $NAV.width();

  play_width -= parseInt($NAV.css("paddingLeft"), 10) + parseInt($NAV.css("paddingRight"), 10); 
  play_width -= parseInt($NAV.css("marginLeft"), 10) + parseInt($NAV.css("marginRight"), 10); 
  play_width -= parseInt($NAV.css("borderLeftWidth"), 10) + parseInt($NAV.css("borderRightWidth"), 10); 

  $NAV.css('height',play_height-16+"px");
  $VIDEO_PANEL.resize(play_width, play_height);
}

В IE аксессор css иногда возвращает NaN. Есть ли лучший способ учесть визуализированную ширину другого элемента?
Если нет, каков лучший способ отловить эти ошибки?

Спасибо!

1 Ответ

1 голос
/ 15 декабря 2010

В вашей ситуации, я думаю, вы должны смотреть на функцию outerWidth вместо width. Используя outerWidth(true), мы можем получить ширину элемента, включая его границы, отступы и поля. Поэтому вы можете заменить эту строку:

var play_width = $PLAY.width() - $NAV.width();

с этим:

var play_width = $PLAY.width() - $NAV.outerWidth(true);

И, таким образом, исключает следующие три строки вычислений.


Кроме того, функции height и width являются не только геттерами, но и сеттерами, поэтому эта строка:

$NAV.css('height',play_height-16+"px");

можно переписать как

$NAV.height(play_height - 16);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...