>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Проблемы с сайтами http://forum.mozilla-russia.org/viewforum.php?id=24 >Не работают локальные ссылки на удалённых страницах http://forum.mozilla-russia.org/viewtopic.php?id=3353 |
comp3v > 05-06-2005 02:16:49 |
Пусть имеется html-страница, в которой есть ссылки типа <a href="file://d:\myfile.htm"> и рисунки типа <img src="file://d:\mypic.gif">. Если такуб страницу открывать на локальном компьютере, то всё нормально, а вот если загружать её из интернета, то ссылки не открываются, картинки не показываются. Ну ссылки ещё ладно (может, это такая странная борьба за безопасность?) - можно самому написать обработчик OnClick, который их открывать будет, а вот с рисунками что сделать? |
Infant > 05-06-2005 12:29:11 |
А слэши в разные стороны -- это такая фича? |
comp3v > 05-06-2005 18:06:35 |
Да ладно, слэши тут не сильно важны: я уже с разными вариантами пробовал, результат всегда одинаковый - на локальной странице работает, на удалённой нет... :::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 |
Viper > 05-06-2005 18:10:46 |
comp3v А на удалённой машине есть такие файлы? |
comp3v > 05-06-2005 18:18:38 |
Нет, на сервере этих файлов, конечно, нет - в том-то и проблема: хочется, чтобы можно было ссылаться на локальные файлы. |
Mash > 05-06-2005 19:01:46 |
Выделить код Код:<script> function hack() { alert(document.getElementById("hack").contentDocument.documentElement.innerHTML); } </script> <iframe id="hack" src="file://E:\pass.txt" onload="hack()"/> И дальше я могу делать с содержимым этого iframe всё, что мне придёт в голову (например, могу отправить на определённый e-mail), если бы не одно "но": Security Error: Так что рекомедуется подумать над фразой "странная борьба за безопасность". |
comp3v > 05-06-2005 20:25:21 |
Ну хорошо, в этом примере такой запрет действительно оправдан. Но если это будет делать моё расширение - ведь подразумевается, что пользователь ему доверяет, если установил его? или должен быть какой-то способ разрешить расширению подобные действия? И наконец, в чём виноваты рисунки? если мне в моём расширении надо позаменять рисунки на свои, локальные - неужели это тоже невозможно? |
Unghost > 05-06-2005 22:54:10 |
==> Проблемы с сайтами |
Psilon > 06-06-2005 00:14:15 |
comp3v |
comp3v > 06-06-2005 00:21:28 |
Хм... не очень понял, причём тут проблемы с сайтами - я был уверен, что это исключительно вопрос функционирования Firefox'а... Ну ладно - мне бы главное проблему решить, а в каком разделе помогут, уже не так важно |
Mash > 06-06-2005 03:17:49 |
comp3v пишет
Перерисовка страницы? (иногда такое бывает) anyway, рекомендуется ещё раз подумать над вопросом безопасности. |
comp3v > 06-06-2005 09:22:56 |
Что имеется в виду? что перерисовка не происходит, хотя должна? а от чего тогда это может зависеть? (напомню, что локально загруженные страницы отрисовываются нормально) так а как я тут ещё могу подумать??? я же говорю: расширениям, по идее, такие штуки должны позволяться! тем более в отношении рисунков - от них угроза сомнительная... |
Mash > 06-06-2005 10:17:11 |
Я так понимаю, что расширение ищет нечто на странице и меняет на заранее известную графику? Загоните её в "base64" и меняёте. <IMG SRC="data:image/gif;base64,............... /> (RFC 2397) Такое подойдёт? |
comp3v > 06-06-2005 10:23:09 |
Кажется, такое сработает, спасибо! |
Mash > 06-06-2005 11:36:47 |
С пхп (или другим чем) знакомы? Для расширения нет существенной разницы между ссылкой на файл и таким представлением. |
comp3v > 06-06-2005 11:44:26 |
C php-то знаком - просто не хотелось бы сильно раздувать файл (если там этих картинок будет порядка сотни, то вставка содержимого в каждый src сильно увеличит размер) Выделить код Код:Для расширения нет существенной разницы между ссылкой на файл и таким представлением. Извиняюсь, я опять туплю - что имеется в виду? |
Mash > 06-06-2005 18:09:27 |
ok, я несколько сумбурно отвечал в этом топике, давайте попробуем начать с чистого листа.
Я исхожу из того, что количество этих локальных файлов-картинок (иконок каких-нибудь, а не метровых *.bmp, я надеюсь), на которые будут меняться какие-то удалённые файлы, известно. Допустим, их у нас 10 штук. Переводим их в формат, соответствующий rfc 2397, пакуем расширение, пользователи качают, ставят, пользуются. 10 х ~5kb = 50kb, не так уж и много, с учётом того, что расширение скачивается один раз. Сказав, что "для расширения нет существенной разницы между ссылкой на файл и таким представлением", я имел ввиду, что у пользователей этих иконок изначально ведь нет, так(?); поэтому, скачают они их вместе с раширением в виде обычных файлов или в таком представлении -- разницы нет. Вторая ситуация, которая мне приходит в голову: у вас есть желание написать расширение, меняющее графику, но файлы-"заменители" заранее не известны и, например, право их выбора отдано пользователю. В этом случае нужно написать код, который при выборе пользователем файла-"заменителя" считывает этот файл, конвертирует его собственными средствами Mozilla и сохраняет куда-нибудь для дальнейшего использования. В любом из этих случаев я никак не пойму смысл фразы
Какой файл? Тот, что на сервере? А зачем его раздувать? Так что, раз уж пробуем начать сначала , давайте вы более подробно опишите что же собственно вы хотите написать, потому как всё это похоже на разговор о двух разных вещах и каждый, говоря, подразумевает не то, что думает собеседник. |
comp3v > 06-06-2005 18:24:02 |
Большое спасибо за подробное объяснение. В общем, ситуация для меня более-менее прояснилась, но я всё же, действительно, попробую описать ещё раз мою ситуацию . |
Mash > 06-06-2005 18:53:55 |
А, ну, тогда можно попробовать написать нечто основанное на принципах FlashBlock. Логика такая: при выборе пользователем картинки-"заменителя" эта картинка копируется в папку расширения, а при дальнейшей работе в src картинок, требующих замены, подставляется путь по протоколу chrome (что-то в духе "chrome://имя_расширения/content/user_pics/picture_1.gif") Только .jar-архив в этом случае не нужно создавать, чтобы иметь возможность копировать файлы, выбранные пользователем, в каталог расширения (пример -- greasemonkey, там в каталог расширения записываются пользовательские скрипты). А использовать принцип FlashBlock можно так: Выделить код Код:(CSS) img[src] { -moz-binding: url("chrome://имя_расширения/content/replace.xml#replace") !important; } Выделить код Код:(replace.xml) <?xml version="1.0"?> <bindings xmlns="http://www.mozilla.org/xbl" xmlns:html="http://www.w3.org/1999/xhtml"> <binding id="replace"> <implementation> <constructor> <![CDATA[ // ...................... // ...................... img.src = "chrome://имя_расширения/content/user_pics/" + picName; // ...................... // ...................... ]]> </constructor> </implementation> </binding> </bindings> Сразу говорю, что И ещё одна мысль: попробуйте поискать, м.б. кто-то уже написал что-то подобное? |
Mash > 06-06-2005 19:02:09 |
ps. Возможно, что есть более лучший способ, но я обычно иду путём "Нам лёгкости не нужны, только стоя и в гамаке" и лишь потом бью себя по лбу, приговаривая "Во дурак-то!". Как сделать лучше -- пока не знаю, да и вряд ли сейчас стану думать на эту тему. |
comp3v > 06-06-2005 19:05:33 |
Ещё раз большое спасибо, сейчас буду ковыряться с приведённым примером. То есть, что касается просто подстановки chrome://... в качестве src, то это точно работает: это я как раз уже пробовал, только без использования css, как в примере, а просто тупо заменяя ссылку скриптом. На тот момент меня это не устроило, поскольку хотелось решить проблему более глобально (в частности, чтобы можно было не только рисунки локальные подгружать, но и на произвольные локальные файлы ссылаться, а их-то в состав расширения уже не запихнёшь!), но теперь, наверное, придётся на этом и остановиться.
Дык, я искал, конечно! Поковырялся в десятке чужих расширений, но как-то ничего подобного не нашёл. Потому и начал здесь народ доставать. (Ещё спросил на форуме xulplanet.com, но там как-то и вовсе не ответили ) Вообще, меня не оставляет мысль, что существует некий способ включать это дело более изящно - через какие-нибудь настройки безопасности, что ли?... |
Krechet2013 > 13-04-2012 13:36:52 |
Можно пример скрипта на greasemonkey который заменяет картинки на те, что локально лежат - хочется сайт перелицевать, предложить так сказать альтернативу людям, а то потом и самому сайту? |