Clicky 0.3b для WordPress и проблемы с JavaScript

Исправляем ошибки JavaScript в Clicky 0.3b для WordPress

В Австралии и США большой популярностью пользуется Clicky — Web Analytics 2.0. Как следует из названия, является еще одним сервисом для анализа статистики веб-сайта. Судя по приведённой на сайте таблице, Clicky, образно говоря, «затыкает за пояс» даже такого конкурента, как .

Себе на сайты я ставить Clicky не пытался, но наблюдал его в действии в проекте, над которым работаю. Могу сказать, что сервис действительно мощный и удобный, а плагин Clicky для относится к разряду «сконфигурировал и забыл».

Всё хорошо, но по традиции есть одно «но»: если на странице используется, например, , то плагин начинает кидаться ошибками .

А там банальная: при поиске cookies автор использовал конструкцию for ... in и предполагал, что все перебираемые свойства окажутся строковыми. Для «голого» браузера это справедливо. Но как только какой-либо скрипт (например, Prototype) расширит прототип Array своими методами, начинаются ошибки. А всё дело в том, что при добавлении новых свойств или методов в прототип объекта у нас нет возможности пометить их как неперечисляемые (non-enumerable), то есть такими, чтобы for ... in их пропускал.

Решение простое: использовать обычный for вместо for ... in. Что, собственно говоря, нижеприведённый и делает. А также добавляет секцию <![CDATA[ ... ]]> внутрь скрипта, чтобы не было проблем с XHTML-контентом.

[-]
Download clicky.php.diff
diff -uwd -r clicky-original/clicky.php clicky/clicky.php
--- clicky-original/clicky.php  2007-06-14 12:33:40.000000000 +0300
+++ clicky/clicky.php   2008-06-25 17:40:07.000000000 +0300
@@ -27,15 +27,17 @@

   if( get_option('wpgc_visitornames')) {
     echo "
-    <script type='text/javascript'>
+    <script type='text/javascript'>/*<![CDATA[*/
     function clicky_get_cookie( name ) {
       var ca = document.cookie.split(';');
-      for( var i in ca ) {
+     var len = ca.length;
+      for( var i=0; i<len; ++i ) {
         if( ca[i].indexOf( name+'=' ) > -1 ) return decodeURIComponent( ca[i].split('=')[1] );
       }
       return '';
     }
     var clicky_custom_session = { username: clicky_get_cookie( 'comment_author_".md5( get_option( "siteurl" ))."' ) };
+   /*]]>*/
     </script>\n";
   }
Автор: ; опубликовано в: Патчи; метки: Clicky, Google Analytics, JavaScript, Prototype, web analytics, WordPress, ошибка, патч, плагин
1
Июл
2008

RSS Комментарии к статье «Clicky 0.3b для WordPress и проблемы с JavaScript» (1)  »

  1. Ошибки JavaScript в Clicky 0.3b для WordPress | WP лента

    [...] Источник [...]

    http://wplenta.ru/plugins/124/

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

Оставить комментарий к записи «Clicky 0.3b для WordPress и проблемы с JavaScript»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा