<rmcreative>

RSS

Все заметки с тегами «JavaScript, mystuff»

Можно уточнить:

    (1)
    (1)
    (1)
    (3)
    (1)
    (1)
  1. Никогда не называйте внешние скрипты «affiliate»

    9 июля 2008

    Сегодня чуть не попал второй раз с именованием внешних скриптов. FireFox упорно не хотел их подгружать применяя при этом к <script стиль display: none. Тут я вспомнил, что это уже было… только с изображениями.

    Как и ожидалось, виноват опять Adblock.

    В имени скрипта встретилось слово «affiliate», на что Adblock отреагировал незамедлительной и, что самое страшное, тихой блокировкой.

    6 комментариев
  2. jQuery, определение браузера

    7 июля 2008

    Заметил, что jQuery.browser.version неверно определяет версию IE. Седьмой считается шестым.

    Ошибка уже в трэкере, но ещё не поправлена:

    http://dev.jquery.com/ticket/1867

    http://dev.jquery.com/ticket/2661

    http://dev.jquery.com/ticket/2413

    user-agent, отдаваемый IE7 сменился с последними обновлениями на:

    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0
    (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET
    CLR 2.0.50727; .NET CLR 3.0.04506.30)
    

    Соответственно регулярка совпала с MSIE 6.0.

    Мораль: user-agent — штука ненадёжная. Лучше проверять наличие объектов, например:

    //IE6
    if (window.external && (typeof window.XMLHttpRequest == "undefined")) {
      //
    }
    8 комментариев
  3. Букмарклет, подгружающий внешний скрипт

    2 июля 2008

    В текущем проекте была задача написания полуавтоматического граббера страниц. Для этого необходимо было делать инъекцию скрипта в текущую страницу. Решил таким букмарклетом:

    <a href="javascript:(function(){var d=document,s;
    s=d.createElement('script');
    if(typeof s!='object')s=d.standardCreateElement('script');
    s.src='http://example.com/js/bookmarklet.js';
    s.type='text/javascript';
    document.getElementsByTagName('head')[0].appendChild(s);})();">Do it!</a>

    В более читаемом виде:

    (function(){
      var d = document, s;
      s = d.createElement('script');
      if(typeof s != 'object'){
        s = d.standardCreateElement('script');
      }
      s.src = 'http://example.com/js/bookmarklet.js';
      s.type = 'text/javascript';
      document.getElementsByTagName('head')[0].appendChild(s);
    })();

    Оттестировано в IE6, IE7, FF2, FF3, Opera 9.2, Opera 9.5, Safari.

    4 комментария
  4. Drupal 5 Thickbox update

    26 мая 2008

    Обновление JS и CSS кода модуля Drupal 5 Thickbox до последней доступной на данный момент версии.

    Исправляет баги IE6 с позиционированием бокса на длинных страницах.

    Требует jQuery Update.

    В основную ветку Drupal 5 включено не будет из-за требуемого jQuery Update.

    Обновляемся.

    Комментировать
  5. replaceAll для JavaScript

    18 марта 2008

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

    String.prototype.replaceAll = function(search, replace){
      return this.split(search).join(replace);
    }

    Пример использования:

    alert("test string... test string!".replaceAll('test', 'a'));
    16 комментариев
  6. IE. id и name в JavaScript

    6 августа 2007

    IE автоматически генерирует id(в DOM-дререве) для элементов, у которых определён name. При этом id становится равным этому самому name. Из-за этого может выйти нечто неприятное:

    <span style="color:blue" name="label">blue</span>
        <span style="color:red" id="label">red</span>
        <script type="text/javascript">     
            alert(document.getElementById("label").style.color);
        </script>
    Комментировать