LINUX.ORG.RU

javascript и локальные файлы


0

1

Пусть файл открыт с локального диска (file://mnt/flash/myfolder/myfile.html5).

Можно ли написать такой javascript, который бы убирал гиперссылки, если они ведут на несуществующие файлы в соседних папках?

Идея такая:
Есть большой общий массив HTML
я отсылаю часть файлов другу
друг видит только те ссылки, которые работают в его комплекте
я отсылаю ещё файлов
начинают работать сслыки из файлов первой волны на файлы второй волны

Можно так на javascript написать, как именно?

Ответ на: комментарий от Suntechnic

пока нет.

что такого страшного произойдет? Локальные файлы просто так не создать, файлы с веба ведь в песочнице работают.

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Indaril_Shpritz

Ну как минимум каждый сайт шпионил бы за тобой и тем какие файлы у тебя на дисках. В каждый второй была бы впилина проверка системы на наличие кряков и нелицензионного контента. Это только если бы можно было проверить доступность, однако ты же понимаешь что впиливая в браузер файловые операции с поддержкой в js этим бы никто не ограничился...

Suntechnic ★★★★★
()

не... нафиг-нафиг такие браузеры с таким js'ом...

emulek
()
Ответ на: комментарий от Suntechnic

каждый сайт шпионил бы за тобой и тем какие файлы у тебя на дисках.

нет, сайты бы так не смогли, потому что они заргужаюся из другой зоны (http) и там у них другие права

Indaril_Shpritz
() автор топика

По-быстрому погуглив, я узнал, что в некоторых браузеров аяксом из файла в принципе можно дергать другие файлы (и очевидно получать некий код ошибки при их отсутствии), если запустить браузер со специальным ключом командной строки. Думаю, это не то. На мой взгляд, лучше вместе с html/js-файлами поставлять еще bash-скриптик, который будет проверять наличие файлов и формировать некий js, содержащий список реально существующих файлов. Этот js можно потом обычным образом включать в myfile.html5. Или в качестве альтернативы можно включить в поставку легковесный портабельный вебсервер с конфигом на нестандартный порт и смотреть файлы через него.

amomymous ★★★
()
Ответ на: комментарий от amomymous

ясно, спасибо.

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

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Indaril_Shpritz

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

Суть такова: в начале каждого html-файла, подлежащего проверке, располагаем в бинарном виде картинку. То есть html-код дописываем к картинке, например в формате jpg, не важно какой, но корректной. Html-код модифицируем так, чтобы бинарные данные картинки, если они интерпретируются браузером как текст, не было видны. Например, вкладываем содержимое html-страницы в <div style=«position:absolute; left:0; top:0; background-color: #ffffff; width: 100%; height: 100%;»></div>.

Далее все тривиально - располагаем в корневом html-документы в скрытом контейнере элементы <img>, в src которых заданы соответствующие html-файлы, и прописываем им событие onload, которое делает видимой соответствующую ссылку.

amomymous ★★★
()
Последнее исправление: amomymous (всего исправлений: 1)
Ответ на: комментарий от drake

там написано про линки с веб-страниц на локальные страницы
а я спрашиваю про линки с локальных страниц на другие локальные страницы

Первые линки это не вторые линки. Я так думаю.

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Suntechnic

Да, если файл не является картинкой, то вместо onload возникает onerror. Onerror также возникает, если файл не найден. А вот идея с фреймами уже не выглядит такой кривой, но я представляю как будет тормозить, если файлов больше сотни.

amomymous ★★★
()
Ответ на: комментарий от Suntechnic

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

MrClon ★★★★★
()

А что, sed не вариант уже?

Eddy_Em ☆☆☆☆☆
()

И еще: если уж хочется извращений, то почему бы не скопировать всю эту мутотень куда-нибудь в дерево апача?

Eddy_Em ☆☆☆☆☆
()

в соседних папках

Нет, но там есть какой-то html5 local storage и какой-то интерфейс типа sqlite. Вот по ним и можно шариться и докачивать туда даты

Bad_ptr ★★★★★
()

Запросто, но этот javascript должен работать не из твоего file:///whatever.html5, а как расширение браузера. Ну или в node.js. Ну или в Rhino.

Твоя задача упорота. Не надо делать так.

x3al ★★★★★
()
Ответ на: комментарий от MrClon

Так-что всё как-бы халяльно, локальный жабаскрипт имеет такие-же права как и любое другое локальное приложение.

Это же кошмар. Спасибо, не надо такого счастья.

x3al ★★★★★
()
Ответ на: комментарий от x3al

А чем собственно локальное JS приложение хуже локального не-js приложения (ну кроме того что js вообще упоротый ЯП :)?
Впрочем повторюсь, всё это просто ненужно.

MrClon ★★★★★
()
Ответ на: комментарий от Indaril_Shpritz

Тем что оно JS, очевидно-же (:
Ну а если серьёзно то браузерный (и прочий встраиваемый) JS всё-таки предназначается для работы в некотором ограниченном домене (сайт, pdf документ, игра (внутриигровую логику часто пишут на встраиваемых языках вроде JSа)).
Работа в качестве обычного локального приложения это всё-таки другой кейс и для него разумно использовать другие реализации JS (отличные от браузера). Например тот-же node.js.

MrClon ★★★★★
()
Ответ на: комментарий от trashymichael

Я в курсе что у ноды внутре неонка^W js-движок от вебкита (или не от вебкита?) + ручки для работы с окружающей системой.
Но всё-таки приложения для ноды пишутся для ноды, а не для сайтовых фронтэндов. Тут грань в основном в головах.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Тем, что сохранивший веб-страницу может не подозревать о существовании js-приложения. И это рай для троянов.

x3al ★★★★★
()
Ответ на: комментарий от Indaril_Shpritz

А прричем тут firefox os? Вроде это какое-то непортабельное поделие на андроиде? Или я ошибаюсь?

drakmail ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.