Динамически генерируемый onclick не обрабатывается IE7 - PullRequest
1 голос
/ 16 ноября 2011

У меня следующий случай: я хочу динамически создать объект с помощью JavaScript, который имеет функцию onclick. Я вставляю этот элемент где-то в моем HTML, в надежде, что функция onclick будет перехвачена.

var newElement= new Element('li', { 'id' : 'Foo', 'onclick' : 'Bar();'} )
$("randomElement").grab(newElement, 'top');

Я проверил это, и он работает правильно в: Firefox, Opera, Chrome, Internet Explorer 8 и выше. Моя проблема связана с Internet Explorer 7, он вообще не обрабатывает событие.
Хотя есть возможность отказаться от поддержки IE7, я все же предпочел бы поддерживать как можно больше браузеров. Есть ли решение или решение этой проблемы?

1 Ответ

2 голосов
/ 16 ноября 2011

Похоже, вы пытаетесь сделать что-то вроде eval, присвоив строку 'Bar ()' атрибуту onclick вместо фактического добавления события.Если вы хотите напрямую передать событие, вы должны сделать это camelCase, поэтому оно должно быть onClick вместо onclick. осторожно , если вы просто сделаете это изменение, оно не будет работать, объяснение следующее:

Можете ли вы попробовать переписать создание вашего элемента следующим образом?

var newElement = new Element('li', { 
    id: 'Foo', 
    events: {
        click: function() { Bar(); }
    }
})

Этона самом деле является предпочтительным способом создания элементов с событиями в MooTools и позволяет избежать неявного eval, явно вызывая функцию Bar как часть обратного вызова click.

...