Javascript - события onload, onclick - PullRequest
       3

Javascript - события onload, onclick

2 голосов
/ 27 февраля 2009

У меня есть метод, который создается при загрузке страницы. Метод запускает два события, window.onload и image.onclick. Проблема только в том, что одно событие работает в любой момент времени (т. Е. Если я комментирую метод image.onclick , метод window.onload работает). Как мне заставить обоих работать?

Это прекрасно работает в Firefox (Mozilla), но не в IE

пример

test.method = function()
{
    window.onload = this.doSomeWork;

    for (i = 0; i < images.length; i++) {
        var image = images[i];
        image.onclick = this.imageClickEvent;

    }
}

Ответы [ 5 ]

1 голос
/ 27 февраля 2009

Проблема в том, что у вас может быть только одно событие загрузки.

Я рекомендую вам попробовать метод addEvent, найденный здесь:

http://ejohn.org/projects/flexible-javascript-events/

1 голос
/ 27 февраля 2009

На самом деле в вопросе недостаточно информации, чтобы выяснить, что идет не так, но на что стоит обратить внимание:

  • ожидает ли код в doSomeWork () или imageClickEvent () получение «this», которое указывает на что-то конкретное? Потому что этого не произойдет, когда вы снимаете метод с объекта-владельца, который назначается обработчику событий.

  • существует ли другой метод, записывающий файл window.onload или image.onclick, который вы можете переопределить?

0 голосов
/ 04 марта 2009

после того, как вы запустите test.method при загрузке страницы, вы перезаписываете свой window.onload новым значением: this.dosomework, поэтому в течение времени загрузки тела вы вызываете первую функцию, затем перезаписываете сразу вторая функция вступает во владение и выполняет ... Вы пытались продвинуть оператор window.onload до самого конца test.method? я предполагаю, что если функциональный блок слишком длинный, второй window.onload никогда не будет выполнен, потому что окно уже завершило загрузку, его миллисекунды, но это все, что требуется

очевидно, в firefox функция выполняется до того, как она будет перезаписана, или, возможно, добавлена ​​к текущей нагрузке, не будучи уверенной в технических деталях. еще раз попробуйте нажать на нагрузку на дно и посмотреть что получится

вы не должны вызывать функцию onload в любой другой функции, которая вызывается после загрузки тела, потому что, независимо от того, насколько вы осторожны, вы не можете зависеть от того факта, что период загрузки достаточно длинный, чтобы содержать оба события, вы должны добавьте к window.onload до вызова (или завершения) тега body, чтобы убедиться, что событие перехвачено.

0 голосов
/ 04 марта 2009

Возможно, вам следует добавить прослушиватель событий здесь, а не пытаться перехватить window.onload?

0 голосов
/ 27 февраля 2009

Посмотрите код на странице с Firefox 3. Затем откройте консоль ошибок Firefox (Ctrl Shift J), чтобы увидеть, какая строка разрывается. Затем обновите ваш вопрос новой информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...