Posts Tagged ‘IE6’

IE7 не показывает скрытый html после удаления CSS класса который его скрывал с помощью jQuery

Posted in Development, Javascript, Tips And Tricks on December 24th, 2009 by Yaroslav Vorozhko – 1 Comment

Проблема

У IE7 и IE6 есть такая особенность, что когда вы удалете класс, который скрывал (display:none) содержимое строки таблицы (тег tr) с помощью jQuery метода removeClass(), то сожержимое строки таблицы (тег tr) все равно не будет отображаться.

Пример

Есть у нас форма в таблице, у которой первые две строки видны, а остальные спрятаны и должны отображаються по нажатию на ссылку.

CODE:
  1. <table>
  2. <tr>
  3.     <td>Your name: </td>
  4.     <td><input type="text" name='name'></td>
  5. </tr>
  6. <tr>
  7.     <td>Your email: </td>
  8.     <td><input type="text" name='email'></td>
  9. </tr>
  10. <tr>
  11.     <td colspan='2'><a href="javascript:void(0);" onClick="showAdvFields();" id="showAdvFields">+ Show advanced options</a></td>
  12. </tr>
  13. <tr class='hide'>
  14.     <td>Your twitter: </td>
  15.     <td><input type="text" name='twitter'></td>
  16. </tr>
  17. <tr>
  18.     <td></td>
  19.     <td><input type="submit" value='Submit'></td>
  20. </tr>
  21. </table>
  22.  
  23. <scripty type="text/javascript">
  24. //$j - это ссылка на jQuery.
  25. function showAdvFields()
  26. {
  27.     if ($j("tr").hasClass('hide')){
  28.         $j("tr.hide").addClass('showAdv');
  29.         $j("tr.hide").removeClass('hide');
  30.         $j("#showAdvFields").html(" - Hide advanced options");
  31.        
  32.     } else {
  33.         $j("tr.showAdv").addClass('hide');
  34.         $j("tr.showAdv").removeClass('showAdv');
  35.         $j("#showAdvFields").html(" + Show advanced options");
  36.     }
  37. }
  38. </script>

Решение

Во первых перестаньте использовать барузер Internet Explorere и переходите на FireFox и Google Chrome :). А если у вас нет выбора, то решение использовать функцию jQuery show, которая решает проблему совместимости с IE.
Вот так я изменил метод показа и скрытия строки таблицы.

CODE:
  1. function showAdvFields()
  2. {
  3.     if ($j("tr").hasClass('hide')){
  4.         $j("tr.hide").addClass('showAdv');
  5.         $j("tr.hide").show();
  6.         $j("tr.hide").removeClass('hide');
  7.         $j("#showAdvFields").html(" - Hide advanced options");
  8.        
  9.     } else {
  10.         $j("tr.showAdv").addClass('hide');
  11.         $j("tr.showAdv").hide();
  12.         $j("tr.showAdv").removeClass('showAdv');
  13.         $j("#showAdvFields").html(" + Show advanced options");
  14.     }
  15. }

Вывод

Не используйте доморощенные решения, читайте документацию и используйте стандартные методы. Я добавил вызов $j("tr.hide").show(), что помогло решить проблему показа и вызвов $j("tr.showAdv").hide() что решило проблему скрытия строки.

Можно конечно обойтись и без класса hide, но такое решения было очень практично.

_gat is not defined

Posted in Tips And Tricks on August 4th, 2008 by Yaroslav Vorozhko – 3 Comments

Новая версия кода google analytics иногда вызывает такую ошибку JavaScript "_gat is not defined", подобная ошибка была и в старой версии google analytics.

Исправить данну ошибку можно следующим кодом, но прежде чем исправлять, надо убедиться в слеующем:

  • у вас не установлен старый urchin tracker код
  • у вас не включен Ad Block или похожая программа блокировки нежелательного содержания
  • у вас не установлены adware, spyware программы, которые фильтруют траффик и могут вырезать нежелательное содержимое

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

<script type="text/javascript">
if (typeof(_gat) == 'object')
{
var pageTracker (YOUR TRACKING CODE)
...
}
</script>

Я буду признателен если вы напишите в комментариях какая у вас была проблема и помогло ли мое решение, решить ее?

urchinTracker(); is not defined

Posted in Tips And Tricks on January 14th, 2008 by Yaroslav Vorozhko – 4 Comments

google-analytics

Javascript warning urchinTracker(); is not defined можно увидеть в FireFox, когда установлен FF extension FireBug или в IE 6 и IE7, когда включено отображение ошибок.

Исправляеться следующим образом:
Строку urchinTracker();
заменяем на
if (typeof(urchinTracker) == ‘function’) urchinTracker();

Цитата  от Владимира Лучанинова:  "Решение правильное, если функция не объявлена, то typeof будет undefined, если объявлена, то function. Честно говоря, не понимаю, почему Google не предлагает сразу вставлять такой код."

Интересно, то что эту ошибку можно увидеть на многих крупных сайтах. У вас ведь ее нет? ;-)