Перехват сообщений браузера медленными скриптами - PullRequest
4 голосов
/ 18 ноября 2010

Возможно перехватывать сообщения браузера, такие как:

Firefox:

Возможно, скрипт на этой странице занят или перестает отвечать на запросы.Вы можете остановить скрипт сейчас, открыть скрипт в отладчике или позволить скрипту продолжить.

IE

Сценарий на этой странице заставляет ваш веб-браузербеги медленно.Если он продолжит работать, ваш компьютер может перестать отвечать на запросы.

Эти сообщения появляются из-за того, что на странице много активности javascript / jquery.сообщения, появляющиеся в первую очередь, указывают на более широкую проблему, но есть ли способ перехватить это сообщение / ситуацию на стороне клиента, чтобы можно было показать более удобное для пользователя сообщение?

Ответы [ 2 ]

6 голосов
/ 18 ноября 2010

Нет, нет никакого способа сделать это, представьте, что злонамеренный пользователь пишет скрипт, который замедляет работу вашего браузера до тех пор, пока он не станет полностью непригодным для использования, теперь предупреждение «Медленный скрипт» может прийти на помощь, но что, если он сможет его перехватить и предотвратить? это из показа?

Вам нужно будет найти решение для основной проблемы, то есть, если вы делаете много вычислений (что, я полагаю, вы делаете), вам нужно разделить их на куски, поместить их в очереди и обрабатывать их асинхронно (если возможно) или по порядку, но с небольшим временем ожидания между ними.

В псевдокоде это может выглядеть так:

var queue = []; // put your functions or the data in here
function() processQueue{
    if (queue.length > 0) {
        var item = queue.shift() // pop of the first item of the queue
        item(); // call the function, or in case of data pass it to th processing function
        setTimeout(processQueue, 100); // wait 100 ms before processing the next chunck
    }
}

setTimeout(processQueue, 0);
1 голос
/ 18 ноября 2010

Нет, нет возможности перехватить эти сообщения, они находятся на более низком уровне в движке для защиты пользователя. Вместо этого посмотрите на то, что занимает так много времени, оптимизируйте как можно больше ... возможно, разбив свою работу на куски, которые имеют пробелы в обработке, чтобы не вызывать сообщения.

...