Выполнить перед подтверждением

Есть ли способ остановить интервал, когда функция включена, прежде чем сработает подтверждение?

function check(){
    clearInterval(interval_id);
    if(confirm('Stream time is running out. Do you want to continue?'))
        //
}

person Andresh Podzimovsky    schedule 10.09.2012    source источник


Ответы (1)


Вы можете подключить свой собственный код к подтверждению, если это то, что вы хотите:

window.proxiedConfirm = window.confirm;
window.confirm = function() {
   // custom interval code here
   return window.proxiedConfirm.apply(this, arguments);
};

Конечно, вы можете прослушать ответы и вручную:

window.proxiedConfirm = window.confirm;
window.confirm = function() {

   // custom interval code here

   var result = window.proxiedConfirm.apply(this, arguments);

   if(result) {
      // start interval again?
   }

   return result;
};
person David Hedlund    schedule 10.09.2012
comment
@AndreshPodzimovsky: Тогда я не уверен, что понял твой вопрос. что вы хотите сделать, чего вы еще не делаете в опубликованном вами коде? - person David Hedlund; 10.09.2012
comment
Проблема в том, что сейчас с вашим кодом интервал не останавливается вообще. - person Andresh Podzimovsky; 10.09.2012
comment
@AndreshPodzimovsky: тогда, вероятно, что-то не так с частью вашего кода, которая его останавливает. вам нужно быть более конкретным и показывать больше того, что вы делаете и чего хотите, чтобы мы могли вам помочь. - person David Hedlund; 10.09.2012
comment
Это все код. В определенный момент вызывается эта функция. Когда он вызывается, мне нужно сначала остановить интервал, и только шоу подтвердит. - person Andresh Podzimovsky; 10.09.2012
comment
@AndreshPodzimovsky: это не весь код. Вы нигде не определяете interval_id. В опубликованном вами коде интервал не устанавливается, и check никогда не вызывается. clearInterval существует и работает; если у вас с этим проблемы, значит что-то еще не так. Вы не можете просто показать нам свой звонок на clearInterval - person David Hedlund; 10.09.2012
comment
interval_id = setInterval('$(\'#camera\').remove()', 20000); setTimeout (проверить, 40000); - person Andresh Podzimovsky; 10.09.2012
comment
@AndreshPodzimovsky: Код, который вы опубликовали, работает. Что-то еще не так. Вам нужно предоставить больше контекста. Проблема не в какой-либо части кода, который вы разместили. - person David Hedlund; 10.09.2012
comment
@AndreshPodzimovsky: да, это скрипка, которую я опубликовал. содержит два интервала. Как и в вашем коде, интервал remove очищается после подтверждения. Вы можете увидеть, как это происходит дважды, прежде чем появится подтверждение, а затем никогда больше. Это именно то, что делает clearInterval, и, похоже, это то, о чем вы просите. У тебя что-то не так? - person David Hedlund; 10.09.2012
comment
@AndreshPodzimovsky: В видео, которое вы разместили, интервал останавливается. Remove происходит дважды перед подтверждением, а затем никогда, что означает, что интервал был остановлен. - person David Hedlund; 10.09.2012