Получение содержимого ‹script src=›

Я пытаюсь написать свой собственный анализатор языка сценариев в JavaScript, используя тег html <script> с настраиваемым атрибутом type. Для встроенных скриптов это легко:

<script>
 //JS parser
 function λParse(code){/*...*/}

 var arr = document.querySelectorAll(
  'script[type="application/x-lambdascript"]'
 );

 l=arr.length;
 while(l--){
  λParse(arr[l].textContent);
 }
</script>

А вот с внешними скриптами немного сложнее. Я могу получить атрибут src, но это все.
Существует ли какое-либо универсальное решение для получения содержимого внешнего файла? Я знаю, что это, вероятно, возможно с помощью XMLHttpRequest, но как насчет веб-страниц, сохраненных на моем собственном компьютере? Есть ли API для него?

Спасибо.


person m93a    schedule 14.06.2014    source источник
comment
Вы сами ответили на свой вопрос. Сделайте запрос и проанализируйте результат.   -  person Adrian Lynch    schedule 14.06.2014
comment
function λ-parse(code){/*...*/} производит SyntaxError из-за -. Вы можете использовать подчеркивание λ_parse или верблюжий регистр λParse.   -  person Oriol    schedule 14.06.2014
comment
Невозможно получить файл из другого домена, это было бы проблемой безопасности, поэтому браузеры не разрешают это (если только вы не используете CORS).   -  person Oriol    schedule 14.06.2014
comment
@Oriol, спасибо, синтаксическая ошибка исправлена. Я не собираюсь использовать скрипты из разных источников — все, что мне нужно, это получить содержимое скрипта из html-документа, сохраненного в той же директории на моем диске.   -  person m93a    schedule 14.06.2014
comment
Это зависит от src из <script>. XMLHttpRequest может запрашивать сценарии того же или другого происхождения, когда удаленный сервер предлагает разрешение. Тем не менее, вы, как правило, захотите использовать http:// даже для файлов, сохраненных на [вашем] собственном компьютере, поскольку file:// не имеет источника для проверки.   -  person Jonathan Lonowski    schedule 14.06.2014
comment
@ m93a Вы получаете доступ к html-документу, используя схему file? Если да, XMLHttpRequest в другие локальные файлы будет работать в Firefox.   -  person Oriol    schedule 14.06.2014
comment
Да, я понял. Жаль, что @Quentin пометил это как дубликат, я бы опубликовал ответ. Да, де-факто та же проблема, но никто не опубликовал точный код. pastebin.com/VJssy2p1   -  person m93a    schedule 14.06.2014
comment
@ m93a — Этот код не сработает. Вы попадете в ту же политику происхождения, о которой говорил Джонатан Лоновски.   -  person Quentin    schedule 14.06.2014
comment
@Quentin Как я уже сказал, это не для запросов из разных источников. Это работает, если файлы html и script находятся на одном веб-сайте или оба в локальной папке. Обычный javascript также не запустится, если он кросс-происхождение.   -  person m93a    schedule 14.06.2014
comment
@ m93a — Большинство браузеров рассматривают любой другой локальный файл как другой источник, даже если они находятся в одном локальном каталоге.   -  person Quentin    schedule 14.06.2014
comment
Chrome, Internet Explorer и Opera (три из пяти лучших)   -  person Quentin    schedule 14.06.2014
comment
Что касается причин не делать этого… Вот, откройте это вложение электронной почты, это совершенно безобидный HTML-документ.   -  person Quentin    schedule 14.06.2014