>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Код работает на странице, не работает в расширении http://forum.mozilla-russia.org/viewtopic.php?id=31266 |
evgenmax > 16-02-2009 12:54:25 |
Учусь писать расширения Файл с кодом content\mhookforms.js:
Такой же код на веб странице между тегами <script> ... </script> выдает сообщение при каждом обновлении, а в расширении только при открытии нового окна. В консоли ошибка: "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:
Firefox 3.0.6 |
Anton > 16-02-2009 14:03:18 |
|
evgenmax > 23-02-2009 20:13:27 |
Anton пишет
Спасибо! Помогло! Пытаюсь из расширения записывать-читать файлы. Код 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: Пробовал и так: FileIO.write (fileIn, 'Содержимое файла', "w", "windows-1251"), и так: FileIO.write (fileIn, 'Содержимое файла', "", "windows-1251") и без read, ничего не помогает. В чем тут дело?:/ |
Anton > 23-02-2009 20:43:32 |
c:\\test.txt не существует, поэтому и false. А прежде чем писать в файл, его надо создать: FileIO. create (file) |
evgenmax > 23-02-2009 20:50:24 |
Anton пишет
Я вручную его создал... С помощью блокнота... |
Anton > 23-02-2009 21:02:17 |
Возможно, не в корне диска c: или имя не test.txt ? |
ipSlicer > 25-02-2009 20:48:12 |
Выделить код Код: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, но эта конструкция работает только на моеме компе, если размещать на сайте, то, как мне уже ответили, политика безопасности не позволит сохранить файл на локальный диск из интернет-сайта. |