У меня есть функция JavaScript.
Как проверить:
если функция была вызвана (в <head></head>
раздел имеет эту функцию), затем для не вызывания функции
если функция не была вызвана (в <head></head>
раздел не имеет этой функции), затем вызовите функцию
как require_once
или include_once
с PHP
Использовать шаблон декоратора.
// your function definition
function yourFunction() {}
// decorator
function callItOnce(fn) {
var called = false;
return function() {
if (!called) {
called = true;
return fn();
}
return;
}
}
yourFunction(); // it runs
yourFunction(); // it runs
yourFunction = callItOnce(yourFunction);
yourFunction(); // it runs
yourFunction(); // null
Это решение обеспечивает свободный от побочных эффектов способ достижения вашей цели. Вам не нужно изменять исходную функцию. Он отлично работает даже с библиотечными функциями. Вы можете присвоить декорированной функции новое имя, чтобы сохранить исходную функцию.
var myLibraryFunction = callItOnce(libraryFunction);
myLibraryFunction(); // it runs
myLibraryFunction(); // null
libraryFunction(); // it runs
var called = false;
function blah() {
called = true;
}
if ( !called ) {
blah();
}
Вы можете использовать глобальную переменную в пользовательском пространстве имен для хранения того, была ли вызвана функция.
if(!window.mynamespace){
window.mynamespace={};
}
mynamespace.callMeOnlyOnce=function(){
if(mynamespace.alreadyCalled)return;
alert('calling for the first time');
mynamespace.alreadyCalled=true;
};
// alert box comes
mynamespace.callMeOnlyOnce();
// no alert box
mynamespace.callMeOnlyOnce();
If (!your_func.called) {
your_func.called = true;
your_func();
}