Какие заголовки / ответы HTTP запускают обработчик "onerror" в теге сценария? - PullRequest
5 голосов
/ 11 апреля 2011

Я вставляю тег script в DOM следующим образом (думаю, JSONP):

var s = document.createElement('script');
s.src = "http://abc.com/js/j.js";
s.onerror = function() {
   alert("Error loading script tag!");
};
document.getElementsByTagName('head')[0].appendChild(s);

Теперь я знаю, что ответ 404 от abc.com для приведенного выше сценария вызоветэто событие ... Какие другие заголовки / ответы могут привести к появлению ошибки в теге script?Я мог бы предположить, что это немного меняется в зависимости от браузера, но если у кого-то есть какой-либо список, который будет очень полезен.

Спасибо!

1 Ответ

7 голосов
/ 11 апреля 2011

4xx и 5xx должны привести к ошибке - по крайней мере, они определены как коды ошибок.

[править] Только что проверили это в Fx 3.5 - это правильное утверждение.

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

var codes = [100, 101, 102, 122, 200, 201, 202, 203, 204, 205, 206, 207, 226, 300, 301, 302, 303, 304, 305, 306, 307, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410], 411, 411, 412, 413,414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 444, 449, 450, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510 ];

            $(codes).each(function() {
                var s = document.createElement('script');
                s.src = "http://localhost/test.php?code="+this;
                var cd = this;
                s.onerror = function() {
                    document.write(cd+',')
                };
                document.getElementsByTagName('head')[0].appendChild(s);

            });

и php код:

<?php header('HTTP/1.0 '.$_GET['code'].' OK'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...