У меня есть веб-сайт с использованием большого количества jQuery и JavaScript, который создает сообщение "Готово, но с ошибками на странице" в нижнем колонтитуле IE. Все на сайте работает отлично, поэтому я не хочу тратить время на устранение точной ошибки. Все, что я хотел бы сделать, это подавить сообщение "Готово, но с ошибками на странице", чтобы клиенты не волновались.
Я пробовал следующее в верхней части страницы без успеха:
window.onerror = function() {return true;}
Вы не можете запретить браузеру сообщать пользователям о наличии ошибок на странице. Это будет дыра в безопасности, и вы на самом деле не имеете права. У вас нет другого выбора, кроме как попытаться исправить его или просмотреть сообщение.
Означает ли это, что вы должны попытаться исправить ошибку? Ну, видя, как вы не можете его подавить, и вы правы, думая, что пользователи не получат удовольствие от сообщения, и что есть тонны отличных инструментов для отладки, на самом деле нет причин не делать этого.
Прислушайтесь к предупреждениям, которые ваши инструменты дают вам, я слышал на улицах, что люди, которые их написали, были довольно умными куки.: D
Вы пытались использовать Firebug в Firefox, чтобы помочь вам узнать, что такое ошибка?
Firebug - отличный инструмент javascript, который дает намного больше информации о причине ошибок JavaScript.
Объект Javascript Error содержит разные поля для разных браузеров:
в IE у вас есть доступ к Error.name, Error.message, Error.number и Error.description.
в FF у вас есть доступ к Error.name, Error.message, Error.fileName, Error.lineNumber и Error.stack(трассировка стека, показывает "@" + Error.Filename + ":" + Error.lineNumber).
try {
// all your buggy code
} catch (e) {
// in FF you can add e.lineNumber or e.stack
alert("Error: " + e.name + " - " + e.message);
}
вы можете использовать это в IE, но, к сожалению, вы не можете отследить его до номера строки. Чтобы сузить код нарушения в IE, добавьте в свой код несколько "маркеров":
var myObject = new Object();
myObject.prototype.myFunction = function() {
alert('start');
// some code here
alert('1');
// some more code here
alert('2');
// some more code here
alert('3');
// some more code here
alert('done');
}
когда загружается ваш script, обратите внимание на значок "Готово с ошибками" при отключении предупреждений. Затем вы можете сузить место, где в коде возникает ошибка (т.е. "Ошибка выдается после" 2 ", но до" 3 "..." ). Это определенно утомительный процесс, но он пробовал и правда, и, что более важно, оставит ваш код без ошибок.
Чтобы отладить ошибку, вы должны использовать средства разработки IE.
Код правильно или используйте уродливые хаки
try{
// all your buggy code
} catch(e){
// please don't do this - instead fix your code.
}