dmitgu (dmitgu) wrote,
dmitgu
dmitgu

Category:

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

Из-за работы бухом у меня полно документов в компьютере и я их упорядочиваю хронологически по папкам месяцев и тематически - при помощи ярлыков (ссылающихся на документы) в тематических папках. Ярлык документа может оказаться в разных папках - например и в исходящих письмах, и в папке налоговой и в папке банка, например (уведомление об открытии счета). Это все я хорошо придумал, но тематических папок до фига, поэтому я решил использовать "интернетовские" странички для их упорядочивания - типа той странички, которую Вы сейчас читаете. Ставлю там ссылки на другие странички и тематические папки. Например, корневая страничка ссылается на странички для внутренних, исходящих, входящих, двусторонних и т.п. документов; далее уже эти странички ссылаются на другие и так до тематических папок. Поэтому у меня удобная иерархическая структура документов и порядок для создания резервных копий.Но по мере пользования всей этой системой назрела необходимость в автоматизации - редактировать все эти html-странички вручную утомительно.

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

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

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

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

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

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

<!DOCTYPE html>

<!-- saved from url=(0014)about:internet -->

<html lang="ru">

Видите, комментарий <!-- saved from url=(0014)about:internet --> ?

Вот этот комментарий и снимает блокировку с выполнения макросов и освобождает от нажатия какой-то нелепой кнопки "Разрешить...". Эта фигня, кстати, называется "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. Заведу тег в ЖЖ, наверно тут еще будет не одно продолжение.

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

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments