Загрузка скрипта по ошибке 404
Прошу прощения за идиотский вопрос. Но сам разобраться не могу, хотя честно и много гуглил. Что-то я туплю. Есть задача реализовать следующую вещь:
На странице есть <script src='fileNN.js'>. Возможна ситуация, когда скрипта fileNN.js на сервере не будет, тогда нужно подгрузить вместо fileNN.js - файл error.js. Понятно, что можно было бы это дело c легкостью устроить с помощью php, но не охота. Можно ли это сделать с помощью конфигурации сервера, с помощью отлова ошибки 404. Или с помощью js, но тогда надо отловить, что fileNN.js не загружен и надо загружать error.js. В js к сожалению пока не селен - ткните, пожалуйста, носом где копать? |
Цитата:
|
Навскидку:
<?php $filename = 'file1.js'; if(file_exists($filename)) { echo '<script type=\"text\/javascript\" src=\"'.$filename.'\.js\"><\/script>'; } else { echo '<script type=\"text\/javascript\" src=\"file2\.js\"><\/script>'; } ?> |
Нее дело в не не умею. Понятно что с серверным скриптом это две секунды. Проверил есть файл на сервере - отдал его содержание, нет отдал содержание заглушки. Задача стоит именно в том чтобы нагружать сервак, как можно меньше и попробовать решить задачу через конфигурацию сервака.
Ну что-то вроде .htaccess ErrorDocument 404 /error.js Ну понятно что такая конструкция в случае script src работать не будет, но может есть какие-то пути? |
monolithed спасибо за совет. Но задача стоит именно избежать использования php.
|
Цитата:
|
Вот в том то и дело, что не работает. Проверял. Если мы в адресную строку браузера вводим http://site.ru/file(которого нет).js то перенаправление происходит и мы получаем в окне браузера код файла error.js.
Но в случае <script src='http://site.ru/file(которого нет).js'>. <script> получает 404 и все. Вот тут моих знаний не хватает и я недопонимаю. То ли это связано с защитой - мы подсовываем <script> файл, который он не просил, или в чем-то другом дело? |
<script src='file(которого нет).js' onError="this.src='error.js';"/>
Такая конструкция тоже не работает. Но как я понимаю это связано с тем, что у script нет события onError. Поправьте меня если не прав. |
Решить через настройку конфигурации сервака так ничего и не получилось. Если кто знает возможно ли загрузить файл в script src по 404 ошибке, буду очень признателен за разъяснения.
Проблему пока решил следующим образом. Скрипты подгружаются на страницу так: <script type="text/javascript" charset="UTF-8"> document.write("<script type='text/javascript' src='http://site/error.js' charset='UTF-8' >") document.write("<\/script>") document.write("<script type='text/javascript' src='http://site/fileNN.js' charset='UTF-8' >") document.write("<\/script>") </script> error.js: document.write('<div id="blank" ><img src="http://site/error.jpg" ><\/a><\/div>'); fileNN.js: var content = '<div id="content" >Bla-bla-bla</div>'; var blank = document.getElementById('blank'); blank.innerHTML = content; Соответственно заглушка (error.js) грузится всегда. Если файл fileNN.js существует, то его содержание перезаписывается на место заглушки. Если файла fileNN.js не существует, то ничего не происходит и посетитель видит заглушку. Так как я полный нуб в js, прошу оценить приемлемо ли такое решение или можно придумать, что-то поизящние? |
сделай проще(если инет медленный посетитель увидит что несуществует и уйдёт не дождавшись загрузки). динамически подключи скрипт нужный(при условии что его подключение нужно динамическое-если нет то просто подключи его)-и пререходи на одну из его функций(а именно присвой переменной маркеру с страницы какое либо значение) если после проверки на значение этой пременной-тебе покажет что в ходе выполнения функции из скрипта значение этой переменной не было изменено -подключай другой скрипт динамически.
|
Часовой пояс GMT +3, время: 05:26. |