посилання: /superuser/92617/stop-never-ending-popup-alerts-in-firefox
Firefox особливо проблематичний ...
Увага! Попередження! НЕ запускайте це!
javascript:
while (true) alert("irritated and exhausted - yet?");
Це буде "нескінченно" і НЕ буде вичерпувати внутрішній тайм-аут, оскільки сценарій не буде перегрівати час процесора досить швидко. У FF 11 це гарантує відсутність можливості переривання вагітності за сценарієм, що не відповідає.
Витончено зупинити лише скривдливий сценарій було можливим і тривіальним у ранніх версіях браузера, використовуючи ручне втручання, без каркання та переривання всього браузера. Не мати такого контролю - головна вада дизайну програмного забезпечення браузера. Необхідні спритні спритність і рефлекси необхідні для впливу на ручну механіку двигуна "рішень", описаних у посиланні.
Увага: сценарії можуть переходити в режим "нескінченно" без тайм-ауту І без запитів типу попередження. Це особливо згубно і надокучливо. В основному, сценарії працюють досить повільно, так що розподіл часового циклу процесора становить приблизно 20 секунд. розтягується на декілька хвилин або годин або ..., перед тимчасовим тайм-актом, шляхом призупинення виконання до відновлення тригера події. Замість того, щоб синхронізувати цикли процесора, для скриптів було б набагато кращому тайм-аут для реального часу. (Ви коли-небудь помічали, як ви не можете перервати сценарій, який намагається отримати вміст - але невдало - для побудови сторінки? У FF і кнопки адресного рядка, reloadі кнопки cancel/stopвимкнені, хоча вкладку принаймні можна закрити.) Звичайний javascript Timeout()іsetInterval() дзвінки не страждають від цього і зумовлені таким чином, що, коли призупинено, ручне втручання може перервати їх "витончено".
Тестове середовище для емпіричних спостережень:
window.navigator.userAgent=
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
PS. сценарій
for (i=1; i > 0; ++i);
врешті-решт уловлює помилку переповнення, коли iперевищує максимально допустиме значення.