Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№118-12-2008 18:15:37

devcoder
Участник
 
Группа: Members
Зарегистрирован: 18-12-2008
Сообщений: 5
UA: Iceweasel 2.0

javascript img.src = "file://..."? можно ли?

Здравствуйте.

Никак не могу добиться вывод локальных файлов(картинок) в <img> средствами JS.
То есть открываем страницу по http:// а её код пытается загрузить file://

Обнаружив http://kb.mozillazine.org/Links_to_local_pages_don't_work
я опробовал след.
1) Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.18) Gecko/20081030 Iceweasel/2.0.0.18 (Debian-2.0.0.18-0etch1)
pref.js

Выделить код

Код:

user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
user_pref("capability.policy.localfilelinks.javascript.enabled", "allAccess");
user_pref("capability.policy.localfilelinks.sites", "file://localhost file:/// file: file:// file:///home file:///var file:///home/nik/tmp/ff-ll/02.jpg file:///home/nik/tmp/ff-ll/01.jpg");

результат - 0

2) ff 3.0.5 (win) - примерно тоже самое, но с учётом других путей

Выделить код

Код:

file:///C://...

результат - 0

Нижу привожу код страницы, для тех кто пожелает быстро проверить.

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script language="javascript" type="text/javascript">
  // <!--
  function getlink( e ) {
    img = document.getElementById('img');
    img.src = e.value;
    alert( img.src );
  }
  // -->
  </script>
</head>
<body>
<input type="text" name="url" value="file:///home/nik/tmp/ff-ll/02.jpg" size="100" maxlength="100" onchange="getlink(this);">
<img id="img" src="" width="100" height="100" align="left" border="2">
</body>
</html>

Если открыть страничку локально или набрать URL в строке адреса, то картинка грузиться.

Вопрос: у кого-нибудь подобная штука работает?

Про localink знаю, но он не помошник в случае динамического кода.
IEtab ну очень не хочется использовать.

Хотелось бы найти решение с правкой конфига или в крайнем случае плагином-расширением.

Отсутствует

 

№219-12-2008 15:49:42

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: javascript img.src = "file://..."? можно ли?

В настройке "capability.policy.localfilelinks.sites" должны быть перечислены url-ы сатов, которым разрешено грузить рисунки по протоколу file. Например, "http://google.com http://localhost" - сайтам google.com и localhost разрешено грузить контент с локального диска.

Отсутствует

 

№319-12-2008 18:20:03

devcoder
Участник
 
Группа: Members
Зарегистрирован: 18-12-2008
Сообщений: 5
UA: Iceweasel 2.0

Re: javascript img.src = "file://..."? можно ли?

Попробовал, добавил "http://servername" - безрезультатно.
И на ff2(linux) и ff3(win).
Есть ещё идеи?

Отсутствует

 

№422-12-2008 10:31:49

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: javascript img.src = "file://..."? можно ли?

Это должно работать. Очевидно вы где-то допустили ошибку. Проверьте следующие пункты:
1)    Вы закрыли браузер перед внесением изменений в prefs.js.
2)    Вы изменили prefs.js того профиля, который вам нужен.
3)    Настройки имеют вид

Выделить код

Код:

user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites", "http://www.example.com");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");

4)    Внесенные настройки сохраняются после перезапуска браузера.
Если все правильно и после этого не удалось отобразить картинку, попробуйте это сделать на минимальном примере.
1)    Добавьте в prefs.js строчки

Выделить код

Код:

user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
user_pref("capability.policy.localfilelinks.sites", "http://www.google.com.ua");
user_pref("capability.policy.policynames", "localfilelinks");

2)    Перейдите на www.google.com.ua и в DOM Inspector попробуйте поменять src у большого логотипа. Сейчас там стоит "/logos/holiday08_2.gif", замените на что-то типа file://c:\testimg.jpg   

Конечно, есть варианты с написанием адона и загрузкой картинок из его поддиректорий по протоколу chrome. Есть вариант с реализацией собственного протокола. Но вариант с настройками в prefs.js профиля проще всего для решения данной задачи.

Отсутствует

 

№522-12-2008 16:06:48

devcoder
Участник
 
Группа: Members
Зарегистрирован: 18-12-2008
Сообщений: 5
UA: Iceweasel 2.0

Re: javascript img.src = "file://..."? можно ли?

Спасибо, да, я ошибся, не определил  "localfilelinks" в "policynames".
Провел на ff2(linux) и ff3(win) - работает как нужно.

http://kb.mozillazine.org/Security_Policies
"For a policy to exist, it has to have a name."

Хотя лёгкое недоумение :/ вызывает следующее:
получается, что "localfilelinks" - зарезервированное имя, уже "известное" мозилке, так же как и "default",  "allowclipboard", ... .
Так зачем же тогда его добавлять в структуру "policynames"?
Ну это ерунда, дело вкуса  разработчиков.

Отредактировано devcoder (22-12-2008 16:09:48)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]