Страницы: 1
Здравствуйте.
Никак не могу добиться вывод локальных файлов(картинок) в <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) - примерно тоже самое, но с учётом других путей
результат - 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 ну очень не хочется использовать.
Хотелось бы найти решение с правкой конфига или в крайнем случае плагином-расширением.
Отсутствует
В настройке "capability.policy.localfilelinks.sites" должны быть перечислены url-ы сатов, которым разрешено грузить рисунки по протоколу file. Например, "http://google.com http://localhost" - сайтам google.com и localhost разрешено грузить контент с локального диска.
Отсутствует
Это должно работать. Очевидно вы где-то допустили ошибку. Проверьте следующие пункты:
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 профиля проще всего для решения данной задачи.
Отсутствует
Спасибо, да, я ошибся, не определил "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)
Отсутствует
Страницы: 1