Member 12597274 Ответов: 1

Функция с аргументами, не работающая с window. onblur и onfocus в javascript


Следующий код не работает

Код:
window.onfocus = welcome("John Doe");
window.onblur = bye("John Doe");

function welcome(name) {
    $("p").append("Welcome back " +name+ " <br>");
}

function bye(name) {
    $("p").append("Good bye " +name+ " see you soon <br>");
}

Однако я заметил, что этот код работает для пользовательских функций, которые не принимают никаких аргументов. См. код ниже. Работает следующий код:

Код:
window.onfocus = welcome; //No Argument here so this code works
window.onblur = bye; //Same here... No argument for the function

function welcome(name) {
    $("p").append("Welcome back John Doe <br>");
}

function bye(name) {
    $("p").append("Good bye John Doe see you soon <br>");
}

Я новичок в jquery и javascript, и все это сбивает меня с толку. Может ли кто-нибудь объяснить, почему именно это не работает? и как я могу заставить пользовательскую функцию с аргументами работать с window. onfocus и методом onblur. (причина работы или не работы более важна для меня, так как я хочу понять механику, а не зубрить фрагменты)

Что я уже пробовал:

window.onfocus = welcome("John Doe");
window.onblur = bye("John Doe");

function welcome(name) {
    $("p").append("Welcome back " +name+ " <br>");
}

function bye(name) {
    $("p").append("Good bye " +name+ " see you soon <br>");
}

1 Ответов

Рейтинг:
0

Kornfeld Eliyahu Peter

Прежде всего существует очень огромная разница между этими двумя:

var v1 = welcome("member");
var v2 = welcome;

Кроме того, onfocus является точкой присоединения для функции обработчика событий. Сигнатура этой функции уже зафиксирована без параметров, и это из - за того, как она получает свои параметры-через глобальный объект события...

Чтобы быть полезным в дальнейшем, вы должны объяснить, какова ваша цель...