Posts Tagged ‘bug’

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, но такое решения было очень практично.

Zend Studio: Workspace in use choose different workspace

Posted in Clients Configuration, Tips And Tricks, Zend Studio on December 7th, 2009 by Yaroslav Vorozhko – Be the first to comment

Вот такую ошибку я увидел недавно, после того как экстренно завершила работу Zend студия.
Причем заставить выбрать рабочее простраство по умолчанию не представляется возможным.
Вот как решается это под Linux (Ubuntu):
rm -rf /tmp/eclipse
С данной проблемой под Windows не сталкивался, поэтому точного решения не подскажу.
Но, как ориентир, я порекомендовал бы почистить "tmp" каталог в Application Data.

_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>

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

Zend_DB Out of memory bug

Posted in MySQL, PHP, Tips And Tricks, ZendFramework on February 10th, 2008 by Yaroslav Vorozhko – 2 Comments

zend_framework_logo

Привет,

Натолкнулся сегодня на один неприятный баг в Zend_DB при работе с "длинными типами данных", которые часто используются для хранения неопределенных по размеру данных в MySQL. Как оказалось, Zend_DB  некорректно работает с типом LONGTEXT И LONGBLOB и решение этой проблемы пока не найденно, но давайте посмотрим подробнее что все-таки можно сделать.

read more »

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 не предлагает сразу вставлять такой код."

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