В настоящее время я пытаюсь сообщать обо всех нераспознанных ошибках JS, например, с помощью jquery:
window.onerror = function(msg, file, line) {
$.post("https://"+current_url+"/js_error", {
msg: msg
file: file
line: line
});
}
current_url
- это всегда домен, в котором я сейчас нахожусь.
Когда я нахожусь вwww.website.com
и скрипт загружается из www.website.com/script.js
(тот же домен), все работает нормально.Я попробовал это с неопределенной переменной, и получил правильное сообщение variable is undefined
постет к https://www.website.com/js_error
.
Теперь у меня есть несколько поддоменов: a.website.com
, b.website.com
и т. Д. Все они имеют разный контент, но используйте точно такой же javascript.
Моя идея заключалась в следующем: всегда включайте javascript из www.website.com
, чтобы при переключении субдомена скрипт мог кэшироваться браузерами и не должен былперезагружен снова.
Но, к сожалению, это нарушает сообщение об ошибке выше.Когда скрипт включен из другого домена, например, я нахожусь на a.website.com
и включаю скрипт от www.website.com/script.js
, я отправляю только эти ошибки в https://a.website.com/js_error
(для браузеров Firefox):
"Script Error." on line 0
Я понимаю, что это связано с политикой того же происхождения, см. этот вопрос .
Я также пытался жестко кодировать current_url
в www.website.com
(откуда загружается скрипт),поэтому POST всегда там, независимо от домена, в котором я нахожусь.Но этот POST вообще не работает с другого субдомена, отличного от www.website.com
(я думаю, что междоменные POST-записи ajax невозможны).
Я также пытался отправить ошибку как GET ($.get
), но это всегда дает мне "Script Error." on line 0
на поддомене - независимо от цели GET.
Итак, как я могу сообщить об ошибках для моего скрипта?Я хочу обнаружить их, чтобы исправить, но не хочу отказываться от кэширования.
Кстати: я использую firebug для отладки своих сценариев, поэтому я обнаруживаю ошибки, когда I возьми их.Но из-за сложности не всегда возможно обнаружить каждую ошибку для каждой комбинации ОС / браузера, и я хочу убедиться, что они обнаруживаются, когда они происходят и у моих клиентов.
РЕДАКТИРОВАТЬ : jsfiddle удалено