Jquery проблемы в старых версиях IE - PullRequest
1 голос
/ 22 декабря 2011

У меня есть следующий оператор в функции document.ready:

  if($("sidebar ").html().trim().length == 0)
  {
    $("sidebar").append("<p>&nbsp;&nbsp;&nbsp;The sides..</p>"); 
  };

Он отлично работает в IE 9, но как только я выбираю IE 8 (стандарт браузера и документа), скрипт перестает работать и даетследующая ошибка:

SCRIPT5007: Unable to get value of the property 'trim': object is null or undefined 
application-e51c9eee7d22e9644481115dc1fedd5f.js, line 7 character 17578

Я посмотрел на .js в режиме отладки и увидел, что мое утверждение выше преобразовано в:

$("sidebar ").html().trim().length==0&&$("sidebar").append("<p>&nbsp;&nbsp;&nbsp;The sides..</p>")

Как предотвратить эту ошибку?Обратите внимание, что я вижу, что узел присутствует на визуализированной странице.

Я подумал, что, возможно, одной ссылки на shiv5.html может быть недостаточно для того, чтобы позаботиться об особенностях IE.Итак, я добавил modernizr.js через звездочки, и я добавил class = "no-js" в свой макет.Все еще не повезло в IE <9. </p>

Что мне не хватает?Что еще я могу сделать, чтобы получить благосклонность повелителей Microsoft?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2011

Согласно MDN, trim недоступно в IE <9. </p>

Вы можете использовать $.trim вместо:

if($.trim($("sidebar ").html()).length == 0)
{
  $("sidebar").append("<p>&nbsp;&nbsp;&nbsp;The sides..</p>"); 
} // <-- Don't want a semicolon here.

В статье MDN перечислены альтернативы, если вы не хотите найти все экземпляры trim и исправить их.Вы можете использовать следующее для создания .trim, если оно не доступно изначально:

if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}
0 голосов
/ 22 декабря 2011

Проверьте эту тему. После быстрого поиска кажется, что у многих людей возникают проблемы с отделкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...