Как остановить цикл setInterval в Javascript вне кода без обновления браузера?

Для Laravel, если вы вставляете новую запись и вызываете $data->save(), эта функция выполняет запрос INSERT и возвращает значение первичного ключа (т.е. id по умолчанию).

Вы можете использовать следующий код:

if($data->save()) {
    return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}
0
задан Havoc Lee 16 January 2019 в 03:56
поделиться

3 ответа

Другим вариантом является поиск iframe на панели инструментов «Инструменты» разработчика (это должно быть выполнимо, даже если основной документ не отвечает из-за блокировки prompt) - затем просто щелкните правой кнопкой мыши элемент iframe и удалите это, нет необходимости вводить любой Javascript. (или, если хотите, вы можете выбрать iframe с помощью querySelector и удалить его, например, document.querySelector('iframe').remove())

0
ответ дан CertainPerformance 16 January 2019 в 03:56
поделиться

Предполагая, что инструменты разработчика закрыты, нажмите esc и f12 почти одновременно. Это должно открыть инструменты разработчика. Если он не будет продолжать пытаться, пока не сделает.

Когда они откроются, нажмите esc и f8. Повторите попытку, пока он не остановит выполнение JavaScript в какой-то произвольной точке кода.

Во вкладке «sources» найдите сгенерированный скрипт для того, что вы написали (случайно я не знаю, как это будет выглядеть в JSBin) и буквально удалите строку var name = prompt("Enter your name: ");. Повторное нажатие f8 продолжит выполнение, как будто работает «новый» код. Это должно освободить вас для копирования / вставки кода с самого сайта, прежде чем обновлять страницу

0
ответ дан Leroy Stav 16 January 2019 в 03:56
поделиться

Это что-то вроде хака и должно использоваться только в случаях, подобных разоблаченному в OP , но
Во всех реализациях используются целые числа как timerid ] , которые просто увеличиваются при каждом вызове.

Так что вы можете сделать, это очистить все тайм-ауты, которые были созданы на странице.
Для этого вам нужно сначала узнать, какой у нас таймрид, а затем вызывать cleatTimeout или clearInterval (они делают то же самое) в цикле, пока не достигнете последнего вызова:

function stopAllTimers() {
  const timerid = setTimeout(_=>{}); // first grab the current id
  let i=0;
  while(i < timerid) {
    clearTimeout(i); // clear all
    i++;
  }
};
btn.onclick = stopAllTimers;

// some stoopid orphan intervals
setInterval(()=>console.log('5000'), 5000);
setInterval(()=>console.log('1000'), 1000);
setInterval(()=>console.log('3000'), 3000);
const recursive = () => {
  console.log('recursive timeout');
  setTimeout(recursive, 5000);
};
recursive();
<button id="btn">stop all timeouts</button>

0
ответ дан Kaiido 16 January 2019 в 03:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: