Вопрос по вызову функции Javascript - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть фрагмент кода JS следующим образом:

window.onbeforeunload = function saveFav() {
//Some JS code
}

Теперь эту же функцию нужно вызывать из обработчика щелчков по ссылке

Так что я просто вызываю функцию как;

$("#someLink").click(function() {
   saveFav();
});

Но по некоторым причинам saveFav () не вызывается при щелчке по ссылке ... Есть ли какая-то проблема с синтаксисом ИЛИ функция будет вызываться только при выгрузке страницы?

Я не хочу копировать код, так как он одинаков как при выгрузке, так и при клике по ссылке.

Пожалуйста, помогите мне. Спасибо.

Ответы [ 3 ]

7 голосов
/ 15 сентября 2011

Действительно просто, определите функцию один раз так:

function saveFav() {
   //...
}

Затем назначьте его соответствующим обработчикам:

window.onbeforeunload = saveFav;
$("#someLink").click(saveFav);

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

2 голосов
/ 15 сентября 2011

Вы просто хотите определить свою функцию, а затем назначить ее обоим:

function saveFav() {
  //Some JS code
}

window.onbeforeunload = saveFav;
$("#somelink").click( saveFav );

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

0 голосов
/ 15 сентября 2011

Вы должны определить свою функцию saveFav перед тем, как назначить ее onbeforeunload, если вы хотите вызвать ее таким образом.

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