JavaScript и Ajax локально (без веб сервера, на локальном компьютере)

Sep 03, 2013 09:46

Чтоб меньше редактировать, надо, чтоб странички сами "догадывались" где какие изменения возникли и обращались к свежим версиям ссылок (у меня "интернетовские" странички оглавления тоже хранятся в хронологическом порядке). А вот для этого надо, чтоб они могли "читать подсказки" из других страниц. И возникает необходимость не просто программировать при помощи JavaScript, но и читать другие документы - а тут есть проблемы, если это все не в интернете, а на локальном компьютере:

А проблема состоит в том, что стандартный метод чтения файлов в JavaScript - это использование объекта XMLHttpRequest, который работает только с веб сервером. Запускать на локальном компе веб сервер для обращения к своим локальным страничкам - как то не хочется.

Но нашелся обходной метод - использовать "плавающую рамку" iframe, в которую загружается проверяемая страничка и из нее уже можно извлечь всю инфу. Однако и тут возникли траблы:


Internet Explorer (IE - браузер Микрософт) при запуске локальных страничек с JavaScript начинает кричать, что запретил всякие там макросы и дави кнопку, если хочешь чтоб исполнились. Собсно, меня интересует как раз IE, потому что он "дружит" с Windows и по ссылке на тематическую папку забрасывает тебя в нее через Проводник.

Но меня интересует еще и Хром (Chromе - браузер Гугл) - я к нему привык и если вместо тематических папок использовать "интернетовские" странички, а документами будут тоже только интернетовские странички, то он тоже годится. А это уже у меня есть идея так свой сайт перестроить по аналогии со своим бухгалтерским методом хранения документов. Так вот, Хром вообще не дает добраться до данных внутри iframe без веб сервера - это у них такая политика безопасности.

Больше года прошло, и наконец я нашел ответ. Для IE надо в начале "интернетовской" страницы указать вот что:

Видите, комментарий ?

Вот этот комментарий и снимает блокировку с выполнения макросов и освобождает от нажатия какой-то нелепой кнопки "Разрешить...". Эта фигня, кстати, называется "Mark of the Web" - можете в поисковиках почитать подробности (например число 0014 - это длина строки " about:internet" ). Этот комментарий меняет зону безопасности с уровня локального компа на уровень интернета. А в интернете исполнять макросы можно, вот и перестает блокировка возникать.

С Хромом решение вроде сразу нашел в интернете, но оно не работало. А состоит оно в том, что надо запускать Хром с параметром. Это не трудно автоматизировать - делаешь ярлык на Хром, задаешь параметр и корневую "интернетовскую" страницу для ее запуска. Параметр такой:

--allow-file-access-from-files

Я в документах сделал пробный файл webworkers.html и попытался его запустить ярлыком с такой строкой внутри:

C:\Users\Dmitgu\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files file:///C:/Users/Dmitgu/Documents/webworkers.html

Увы, сразу не заработало. Случайно наткнулся на причину: Оказывается, что надо закрыть все страницы Хрома и только после этого такой ярлык запустит Хром с возможностью читать локальные документы. А если не закрывать уже имеющиеся страницы Хрома, работающие в обычном режиме, то ярлык и новую страницу открывает как один из документов, находящийся тоже в исходном обычном режиме работы.

Да, кстати, свою систему упорядочивания документов я называю для себя Fbase. Заведу тег в ЖЖ, наверно тут еще будет не одно продолжение.

javascript, ЖЖвЖЖ программирование, fbase

Previous post Next post
Up