Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.11.2010, 11:55
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

Загрузка скрипта по ошибке 404
Прошу прощения за идиотский вопрос. Но сам разобраться не могу, хотя честно и много гуглил. Что-то я туплю. Есть задача реализовать следующую вещь:

На странице есть <script src='fileNN.js'>. Возможна ситуация, когда скрипта fileNN.js на сервере не будет, тогда нужно подгрузить вместо fileNN.js - файл error.js.

Понятно, что можно было бы это дело c легкостью устроить с помощью php, но не охота. Можно ли это сделать с помощью конфигурации сервера, с помощью отлова ошибки 404. Или с помощью js, но тогда надо отловить, что fileNN.js не загружен и надо загружать error.js.

В js к сожалению пока не селен - ткните, пожалуйста, носом где копать?
Ответить с цитированием
  #2 (permalink)  
Старый 27.11.2010, 12:23
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от ikarushka
Понятно, что можно было бы это дело c легкостью устроить с помощью php, но не охота.
Неохота и не умею - разные вещи. Это делается 1-2 минуты если что.

Последний раз редактировалось monolithed, 27.11.2010 в 12:29.
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2010, 12:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Навскидку:

<?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>';
}
?>

Последний раз редактировалось monolithed, 27.11.2010 в 12:31.
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2010, 12:34
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

Нее дело в не не умею. Понятно что с серверным скриптом это две секунды. Проверил есть файл на сервере - отдал его содержание, нет отдал содержание заглушки. Задача стоит именно в том чтобы нагружать сервак, как можно меньше и попробовать решить задачу через конфигурацию сервака.
Ну что-то вроде .htaccess
ErrorDocument 404 /error.js
Ну понятно что такая конструкция в случае script src работать не будет, но может есть какие-то пути?
Ответить с цитированием
  #5 (permalink)  
Старый 27.11.2010, 12:38
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

monolithed спасибо за совет. Но задача стоит именно избежать использования php.
Ответить с цитированием
  #6 (permalink)  
Старый 27.11.2010, 12:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от ikarushka
ErrorDocument 404 /error.js
Ну понятно что такая конструкция в случае script src работать не будет, но может есть какие-то пути?
Почему не будет?
Ответить с цитированием
  #7 (permalink)  
Старый 27.11.2010, 12:51
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

Вот в том то и дело, что не работает. Проверял. Если мы в адресную строку браузера вводим http://site.ru/file(которого нет).js то перенаправление происходит и мы получаем в окне браузера код файла error.js.
Но в случае <script src='http://site.ru/file(которого нет).js'>. <script> получает 404 и все. Вот тут моих знаний не хватает и я недопонимаю. То ли это связано с защитой - мы подсовываем <script> файл, который он не просил, или в чем-то другом дело?
Ответить с цитированием
  #8 (permalink)  
Старый 27.11.2010, 13:01
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

<script src='file(которого нет).js' onError="this.src='error.js';"/>
Такая конструкция тоже не работает. Но как я понимаю это связано с тем, что у script нет события onError. Поправьте меня если не прав.

Последний раз редактировалось ikarushka, 27.11.2010 в 13:06.
Ответить с цитированием
  #9 (permalink)  
Старый 27.11.2010, 15:11
Новичок на форуме
Отправить личное сообщение для ikarushka Посмотреть профиль Найти все сообщения от ikarushka
 
Регистрация: 26.11.2010
Сообщений: 7

Решить через настройку конфигурации сервака так ничего и не получилось. Если кто знает возможно ли загрузить файл в 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, прошу оценить приемлемо ли такое решение или можно придумать, что-то поизящние?

Последний раз редактировалось ikarushka, 27.11.2010 в 15:15.
Ответить с цитированием
  #10 (permalink)  
Старый 27.11.2010, 19:03
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

сделай проще(если инет медленный посетитель увидит что несуществует и уйдёт не дождавшись загрузки). динамически подключи скрипт нужный(при условии что его подключение нужно динамическое-если нет то просто подключи его)-и пререходи на одну из его функций(а именно присвой переменной маркеру с страницы какое либо значение) если после проверки на значение этой пременной-тебе покажет что в ходе выполнения функции из скрипта значение этой переменной не было изменено -подключай другой скрипт динамически.

Последний раз редактировалось dmitriymar, 27.11.2010 в 20:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка скрипта в блок [MI_nor] Events/DOM/Window 2 04.10.2010 14:24
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03
Загрузка скрипта с локального комьютера uncher AJAX и COMET 49 04.02.2009 23:12
Загрузка внешнего скрипта... viliv Общие вопросы Javascript 26 26.01.2009 13:21