у Ника

имеется кое-что: лог, код, муз, sms

Содержимое рубрики «JavaScript»:

17 октября 2008, 17:32

Не работает onclick в IE

IE не устает давать повод поизвращаться в JavaScript'е.

В этот раз столкнулся с неработающими onclick и прочими event'ами в элементах, созданных динамически (через innerHTML). Из-за чего не работала ключевая фича сайта (а пока я понял, что именно из-за этого... В общем, как всегда).

Пришлось вызывать дополнительную функцию, которая заменяет event'ы со строковым типом (это как раз неработающие) на работающие функции:

// Fix for IE: makes eventhadlers work for elements created dynamically.
//
// Arguments example:
// @arrEvents = ['onclick', 'onmouseover', 'onmouseout'];
// @arrTtags = ['a'];
function fixEventHadlersIE(arrTags, arrEvents)
{
    if (!document.all) return;
    var e, elms, i, j, k;
    for (k=0; k < arrTags.length; k++)
    {
        elms = document.getElementsByTagName(arrTags[k]);
        for (i=0; i < elms.length; i++)
        {
            e = elms[i];
            for (j=0; j < arrEvents.length; j++)
                if (typeof e[arrEvents[j]] == 'string')
                    e[arrEvents[j]] = new Function(e[arrEvents[j]])
        }
    }
}

Весьма познавательно.

При использовании своего скрипта для автозаполнения поля в форме (например, данными из БД) часто мешает автозаполнение самого браузера.

Отключить его помогает аттрибут autocomplete:

< input type="text" name="q" autocomplete="off" />

Подсмотрел в коде главной страницы Google.

16 июля 2008, 21:16

innerHTML, IE, overflow:auto

Интернет — великая вещь.

Весь день в IE делал такое присваивание (javascript):

div.innerHTML = '<p>aaa</p><p>bbb</p><p>ccc</p><p>...';

Отображается только первый P — хоть что делай. При использовании DOM тоже. Если бы не нашел описание этого бага для элементов с overflow:auto;, то не знаю, что делал бы.

В итоге обернул все в таблицу и получил работающий скрипт.

А IE — маст дай!