Событие Dojo.Connect не вызывается - почему? - PullRequest
4 голосов
/ 25 марта 2011

Я пытаюсь подключить событие onMouseDown к изображению с dojo.connect, например:

dojo.connect(dojo.byId("workpic"), "onMouseDown", workpicDown);

function workpicDown()
{
    alert("mousedown");
}

Аналогичный код несколькими строками позже, где я подключаю onMouse* события к dojo.body, работает правильно

но когда я нажимаю на изображение, я не вижу окно предупреждения, поэтому событие не вызывается. Почему это так?

Ответы [ 2 ]

7 голосов
/ 25 марта 2011

"onMouseDown" должен быть полностью строчным, когда используется с событиями DOM, в отличие от событий Widget.Попробуйте:

dojo.connect(dojo.byId("workpic"), "onmousedown", workpicDown);

Из документации :

Примечание об именах событий: имена событий теперь строчные, за исключением особых случаев (например,, некоторые события Mozilla DOM).Dojo добавит «on» к названию вашего мероприятия, если вы его отключите (например, «click» и «onclick» - это то же самое, что и dojo).Это отличается от Widget Events в том смысле, что Dijit использует имена событий mixedCase, чтобы избежать потенциальных конфликтов.

0 голосов
/ 25 марта 2011

Возможно, это проблема контекста выполнения. Попробуйте использовать пар:

dojo.connect(dojo.byId("workpic"), "onMouseDown",window, "workpicDown");

window.workpicDown = function()
{
    alert("mousedown");
}
...