Страницы: 1
Учусь писать расширения
Пример взял отсюда http://forum.mozilla-russia.org/viewtopic.php?id=8970 , пока даже автора и GUID не поменял.
Файл с кодом content\mhookforms.js:
function doLoad() {
alert('Load page');}
window.addEventListener("load", doLoad(), true);
Такой же код на веб странице между тегами <script> ... </script> выдает сообщение при каждом обновлении, а в расширении только при открытии нового окна.
Причем сначала появляется окно с сообщением 'Load page', а после нажатия на "ОК" появляется и загружается окно
В консоли ошибка: "uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: chrome://mhookforms/content/mhookforms.js :: <TOP_LEVEL> :: line 10" data: no]".
В чем тут проблема, подскажите ?
Вместо "load" пробовал "DOMContentLoaded", то же самое
Файл content\mhookforms.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://mhookforms/content/mhookforms.css" type="text/css"?>
<overlay id="mhookforms" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><script type="application/x-javascript" src="mhookforms.js" />
</overlay>
Firefox 3.0.6
Отредактировано evgenmax (16-02-2009 13:01:19)
Отсутствует
В чем тут проблема, подскажите ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
В чем тут проблема, подскажите ?
Спасибо! Помогло!
Опять дело встало. Наверное, опять со скобками напутал.:/
Пытаюсь из расширения записывать-читать файлы.
Файл io.js в папку content положил.
В content\mhookforms.xul прописал:
<script type="application/x-javascript" src="io.js" />
Код content\mhookforms.js такой:
function doLoad() { if (getBrowser().contentDocument.location.host=='www.site.ru'){ alert('Load page'); var fileIn = FileIO.open('с:\\test.txt'); alert (fileIn); var s = FileIO.read (fileIn); alert('File read: ' + s); var rv = FileIO.write(fileIn, 'Содержимое файла'); alert('File write: ' + rv); } } window.addEventListener("DOMContentLoaded", doLoad, true);
Второй алерт выдает: "xpconnect wrapped nsILocalFile"
Это, как я понимаю, значит, что файл открылся и в переменной ссылка на интерфейс:rolleyes:
Следующие два алерта выдают "false"
Пробовал и так: FileIO.write (fileIn, 'Содержимое файла', "w", "windows-1251"), и так: FileIO.write (fileIn, 'Содержимое файла', "", "windows-1251") и без read, ничего не помогает.
В чем тут дело?:/
Отсутствует
Следующие два алерта выдают "false"
c:\\test.txt не существует, поэтому и false.
А прежде чем писать в файл, его надо создать: FileIO. create (file)
Кажется, так.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Следующие два алерта выдают "false"
c:\\test.txt не существует, поэтому и false.
А прежде чем писать в файл, его надо создать: FileIO. create (file)
Кажется, так.
Я вручную его создал... С помощью блокнота...
Нужно обязательно в программе?
Отсутствует
Я вручную его создал... С помощью блокнота...
Возможно, не в корне диска c: или имя не test.txt ?
Я нашёл одно из определений FileIO здесь: http://forum.mozilla-russia.org/viewtopic.php?pid=215699#p215699
И у меня работает именно так - файла нет - false, файл есть - строка.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
fn="C:\\test.txt"; content="русский текст"; netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var uniConv = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uniConv.charset = "windows-1251"; content = uniConv.ConvertFromUnicode(content); var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(fn); if (!file.exists()) file.create(0, 0664); var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); out.init(file, 0x02 | 0x08 | 0x20, 0666, null); out.write(content, content.length); out.flush(); out.close();
Вот рабочий код. FF 3.0.6, но эта конструкция работает только на моеме компе, если размещать на сайте, то, как мне уже ответили, политика безопасности не позволит сохранить файл на локальный диск из интернет-сайта.
Отсутствует
Страницы: 1