#javascript #google-chrome #google-chrome-extension
#javascript #google-chrome #google-chrome-расширение
Вопрос:
Следующий код предназначен для закрытия всплывающего окна расширения Google Chrome через 3 секунды после отправки пользователем формы.
function closeIt() {
self.close();
}
$('#logForm').html('<h2>Bookmark Added</h2>');
setTimeout(closeIt,3000);
Если я вызываю self.close () сам по себе в потоке кода, он работает должным образом, чтобы закрыть всплывающее окно. Однако в приведенном примере он, похоже, вообще не выполняется и не показывает задержки перед обновлением всплывающего окна.
Я попытался немного поэкспериментировать с предупреждением, только чтобы обнаружить, что предупреждения, по-видимому, мешают подсчету времени ожидания… Я также пытался использовать «closeIt» с кавычками, но безрезультатно.
ОБНОВЛЕНИЕ: Спасибо за помощь! Всплывающее окно закрывается следующим кодом, но задержки вообще нет. Код включен в функцию, которая выполняется при отправке формы. Просто чтобы исключить проблему с функцией close, являющейся проблемой, я также попытался использовать $ (‘#logForm’).css(‘border’, ‘3px double red’); вместо self.close(), чтобы посмотреть, будет ли задержка и выполнение, но этого не произошло.
function closeIt() {
self.close();
}
$('#logForm').html('<h2>Bookmark Added</h2>');
setTimeout(function() {closeIt();} ,3000);
Комментарии:
1.
self
Указывает на правильную вещь?2. @alex — Оно тоже появляется … оно закрывает всплывающее окно.
Ответ №1:
Используйте следующее
window.onload = function()
{
setTimeout(function(){
window.close()
},3000);
}
Комментарии:
1. OP правильно передает ссылку на функцию в setTimeout, иначе ваш
closeIt()
будет выполнен сразу.2. затем оберните это другой функцией: setTimeout(function(){ closeIt(); }, 3000);
3. В данный момент код выполняется внутри функции, подобной: $(«#logForm»).submit(функция(){ //код });