|
Загрузка файла без AJAX.
Передо мной стоит задача загрузить JS файл на клиета без AJAX. Главное условие - в сценариях я должен иметь доступ к исходному тексту скрипта. Так как код не попадает в DOM при использовании тега script, я пробовал разные варианты:
1. Iframe В нормальных браузерах код отображается во фрейме и я могу получить исходный код. Но ишак вместо этого предлагает скачать файл, т.к. расширение его - js, а он ждет html. Не хотелось бы накладывать лишние ограничения по именам и заголовкам запроса. 2. Object & Embed Через тег object можно указывать тип подключаемого объекта. Пробовал разные типы: plain/text, text/html, text/javascript - код не выводится и через DOM не доступен. С такими типами - text/xml, application/xml и application/text-xml уже есть какое-то движение: появляется ошибка парсера xml и через контекстное меню, "Исходный код HTML" я всё-таки вижу код файла, но через DOM получить не смог. Хотя можно получить первую строку из ошибки парсера и если файл будет сжат в 1 строку - можно получить весь код. Но это опять же лишние ограничения. С тегом embed вообще ничего интересного не смог добиться. 3. ActiveX DOM XML Пробовал и таким способом, конкретно через метод load. Но опять же парсер XML падает с той же ошибкой. Не устраивает аякс по нескольким причинам: нужен лишний кроссбраузерный код, хоть и не большой, а так же его ограничение на количество открытых соединений. Лучше когда браузер сам качает. Какие ещё варианты могут быть? Я уже незнаю... |
Цитата:
Цитата:
|
Цитата:
Цитата:
Если дать браузеру качать файлы, он в любом случае сделает это лучше и все ограничения разрулит сам. Ну если не удаться по-другому, то конечно придётся аяксом. Поясню для чего мне нужен исходный код. Дело в том, что для нормального API, его необходимо запускать в контексте определённого объекта и в специальном scope. |
Цитата:
Цитата:
Цитата:
Если нужен точный исходник файла, то только два варианта: 1. XHR, 2. Посредник на сервере, который будет оборачивать ответ в jsonp, например. |
Цитата:
Цитата:
Цитата:
Цитата:
|
Причем если открывать файл локально, то он показывается, если через http - качается:blink:
Тупой ишак. |
Цитата:
попробуй отдавать скрипт без content-type,или отличным от умолчательного для JS |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
В общем есть некий контроллер низкого уровня. Под ним работают классы, которые реализуют какую-то функциональность (каждый свою). Контроллер же должен быть независимым и отказоустойчивым. Доступен он только для тех классов, которые под ним работают, т.к. между ними есть своё API. Так же могут быть какие-то общие компоненты, которые могут использоваться этими классами, например работа с AJAX или событиями. Пока точно не решено выносить такие компоненты в отдельный тип или же приравнять к классам. В первом варианте создаётся зависимость контроллера от компонента, что не приемлемо. Если тот же код внести в сам контроллер, то получается дублирование (поддержка AJAX в любом случае должны быть извне). В общем лишний он тут совсем. Не знаю, поймёте, нет... С другой стороны ссылка на js-файл может представлять из себя что угодно, поэтому заголовки всё равно должны быть настроены. |
Часовой пояс GMT +3, время: 19:56. |
|