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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

Разработка » Организация обновления в FF3 » 10-02-2009 15:44:56

Спасибо. Получилось.
Ещё помогла тема http://forum.mozilla-russia.org/viewtopic.php?id=20846.

Разработка » Организация обновления в FF3 » 10-02-2009 10:58:25

Возможно тема не нова и уже поднималась. Но 2 дня поиска ничего не дали.
Моё расширение для FF работало во второй версии и обновлялось без проблем (<em:updateURL>). В третей версии политику изменили.
Поскольку обновления моего расширения не предвиделись, то я на обновление забил, и для совместимости с FF3 просто закомментировал тег <em:updateURL> в файле install.rdf.
Но вот потребовалось вносить изменения в расширение и вопрос поддержки обновлений стал ребром.
Если есть какое-то пошаговое руководство, что для этого нужно сделать - буду очень благодарен.

Разработка » Открытие диалога и управление им » 19-05-2006 11:02:48

Сделал. По извращенному, но других путей не вижу.
Если брать в виде примера

Выделить код

Код:

var ww = openDialog("file:///P:/xul/winn.xul", "", "chrome,dialog=yes,modal=false, centerscreen");
window. setTimeout (function () {ww.tick_dialog()}, 1000);
for (var i=0;i<999999999;i++)
{
    var k=i;
}

то цикл выносится в отдельную функцию. Даже не сам цикл а только его тело. Заводится глобальная переменная показывающая текущий шаг цикла. А в функции происходит рекурсивный вызов через setTimeout с инкрементом шага.

Теперь есть возможность проводить обновление диалога при каждом шаге.

Если у народа есть более удачные решения - всегда рад выслушать.

Разработка » Открытие диалога и управление им » 19-05-2006 09:15:41

А если в Вашем примере попробовать выполнить след. код

Выделить код

Код:

var ww = openDialog("file:///P:/xul/winn.xul", "", "chrome,dialog=yes,modal=false, centerscreen");
window. setTimeout (function () {ww.tick_dialog()}, 1000);
for (var i=0;i<999999999;i++)
{
	var k=i;
}

То отображение диалога произойдёт только после выполнения цикла. В этом вся и засада.

А value я меняю у элемента label так:

Выделить код

Код:

function animateDotter()
	{
		var t=document.getElementById('qsWaiterTitle');
		var s=getString("waitlabel");
		l_curDotCount+=1;
		var ti=l_curDotCount%(l_maxDotCount+1);
		t.setAttribute('value',s+ti);		
	}

Разработка » Открытие диалога и управление им » 18-05-2006 17:50:05

Немного разобрался. open() действительно лишний.
Проблема в том, что создаю я диалог в некой функции. Причём сразу после создания диалога в этой же функции идёт тяжеловесный код (вызов XPCOM), который пока не исполняется - диалог не прорисовывается.


Проблема в следующем коде:
var ww = openDialog("chrome://..../wait.xul", "", "chrome,dialog=yes,titlebar=no,popup=yes,modal=false, centerscreen");
ww.open();
.....
for()
{
     ........
     ww.foo();
     ......
}
....
ww.close();

Функция foo определена в диалоге и занимается его перерисовкой (меняет value у элементов диалога).

Так вот перерисовка элементов на диалоге не происходит. (Наверное точнее сказать, что функция вызывается, значения элементов меняются, но окно не перерисовывается.) Если например в foo() после присвоения новых значений вставить alert, то новые значения будут видны. Иначе нет.
Есть ли какой нибудь способ принудительно перерисовывать диалог? Уделить ему машинного времени.....

Или обеспечить в диалоге принудительн

Разработка » Открытие диалога и управление им » 18-05-2006 17:21:04

А почему ? Так задумано, что ли ? Т. е., он в *.xul так настроен ?

Вовсе нет. Вот заголовок xul:
<!--window-->
<window id="qsWaiterWindow"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
           onload="alert(1);">

Если вместо
var ww = openDialog("chrome://..../wait.xul", "", "chrome,dialog=yes,titlebar=no,popup=yes,modal=false, centerscreen");
делать
openDialog("chrome://..../wait.xul", "", "chrome,dialog=yes,titlebar=no,popup=yes,modal=false, centerscreen");
то диалог открывается.  Но как же к нему тогда доступиться?

Разработка » Открытие диалога и управление им » 18-05-2006 16:53:24

Если убрать open(), то не появляется мой диалог.

Разработка » Открытие диалога и управление им » 18-05-2006 16:00:29

Задача:
Есть расширение под FF. Нужно при некоторых действиях открывать диалог и программно управлять им. Например, когда выполняются длительные действия - менять прогресс-бар. А потом программно-же и закрыть.
Пытаюсь делать так:
var ww = openDialog("chrome://..../wait.xul", "", "chrome,dialog=yes,titlebar=no,popup=yes,modal=false, centerscreen");
ww.open();
.....
ww.foo();
....
ww.close();
Однако при этом открывается ещё одно окно браузера. Это напрягает.

Какие есть нормальные решения задачи?

Firefox » FF и Object Browser Oracle » 05-05-2006 14:12:41

Куча ругательств на css. Кроме того:
1. Ошибка: Ошибка при анализе значения свойства 'cursor'.  Потерянное объявление.
Источник: http://127.0.0.1:8080/apex/f?p=4500:2250:3907735138520519:GETOBJECT_TREE:NO:::
Строка: 0

2. onTabLoad: notab TD

3. Ошибка: неправильный
Источник: file:///C:/Documents%20and%20Settings/serg/Application%20Data/Mozilla/Firefox/Profiles/default.gx7/localstore.rdf
Строка 1, символ 1

На других компах пробовал - тоже самое.

В Mozilla нет никаких сообщений в консоли. Всё чисто.

Firefox » FF и Object Browser Oracle » 05-05-2006 13:01:13

Начал юзать Oracle Database 10g Express Edition.
Заметил, что при использовании FF 1.5.0.3 на странице (являющейся web-мордой администрирования Oracle) при попытке просмотра не отображаются исходники (закладка Code) хранимых процедур, функций, представлений. Также не работают кнопки на этих страницах (например, Compile,Download,Drop,Edit,Undo,Redo,Find). Похоже существует проблема в том как FF работает с Java.

В IE 6 и Mozilla 1.7.8 таких проблем не наблюдается.
Никто с такой засадой не сталкивался?

Разработка » Создание письма из FF » 14-04-2006 15:14:48

Попытка вызвать такую функцию из FF ни к чему не приводит.

Выделить код

Код:

function CrEmail()
{
	netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        alert(1);
	var pref = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance();
        alert(2);
}

Alert(2) уже не срабатывает. Никаких сообщений об ошибках. Это касается всех классов, связанных с почтой.

Возможна ли ситуация, что эти классы можно использовать только из почтового клиента? А из браузера нет?

Разработка » Создание письма из FF » 14-04-2006 13:43:04

За ссылки спасибо.

Aerina пишет

Думаю, Вы хотели написать про компоненты в Mozilla Suite... в FF же нет почтового клиента.

Именно из FF. Просто нужно вызвать почтовый клиент по умолчанию. mailto не подойдёт поскольку невозможно автоматом приаттачить файл.

Разработка » Создание письма из FF » 14-04-2006 10:02:34

Нужно на странице, при некоторых условиях вызывать почтовик со сформированным письмом, в котором будут аттачи. Есть ли в FF какие-либо компоненты, которые позволят это сделать?

ps. Кроме того несказанно буду рад ссылке на справочник по существующим компонентам в @mozilla.org/ и их методам. А то как в слепую.....

Разработка » Программно менять параметры из about:config » 06-04-2006 17:05:57

Скрипт из моего расширения для FF выполняется довольно долго. И появляется известное сообщение, что скрипт "возможно занять и не отвечает". Для себя в about:config поменял dom.max_script_run_time.
Как бы его менять из скрипта перед выполнением? А потом бы неплохо вернуть старое значение...

Разработка » Из расширения проверить наличие на странице скрипта » 15-03-2006 12:59:47

Пока делаю через ж.... Подробнее:
файл html:
....
<script>
function foo()
{
    alert("aaa");
}
<input type="Hidden" id="foo_id" onChange="foo();">
.....

в расширении пишу такую функцию:
function func1()
{
     .....
   alert(window.getBrowser().contentDocument.getElementById("foo_id").getAttribute('onChange'));
   eval(window.getBrowser().contentDocument.getElementById("foo_id").getAttribute('onChange'));
}

То есть через скрытый элемент на странице пытаюсь вызвать некий скрипт. (Как напрямую обратиться к функции foo я не нашёл.:() Alert возвращает имя функции: "foo()". Однако eval не срабатывает. Если для элемента на странице в onChange сразу указать alert("aaa"); , то вызов происходит.
Как можно обеспечить вызов функции по имени из расширения? Подмогите советом.

ЗЫ. Предложения по улучшению кода будут приняты с благодарностью.

Разработка » Из расширения проверить наличие на странице скрипта » 14-03-2006 17:11:06

Пишу свое расширение для FireFox. Нужно в этом расширении проверять на текущей странице наличие определенной функции написанной на JS. Если такая функция есть то вызвать ее.
Как можно провернуть такое?

Разработка » Вызов Excel их FireFox » 16-02-2006 13:15:01

Нашел.
user_pref("signed.applets.codebase_principal_support", true);

Разработка » Вызов Excel их FireFox » 16-02-2006 12:30:26

Выгрузку в Excel сделал. Из локального файла всё работает замечательно. Если кому нужно поделюсь.
В виде компоненты ещё не оформлял. Хочу потестировать код и осмыслить будущую структуру компоненты.
Поэтому сейчас использую комманду
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Столкнулся с такой проблемой: при попытке выполнить код с сервера такое сообщение:
Сценарию с http://localhost было отказано в правах: UniversalXPConnect.
Наверное в мозилле нужно какие-то настройки сделать....
Использую FireFox 1.5.0.1 из под WinXP.
Помогите.

Добавлено:
С вызовом из crome та-же история. Написал специально xul-файлик (типа посредник), в котором при открытии пытаюсь выполнить код:
function ToExcel()
{
    try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        const cid = "@mydomain.com/XPCOMExcel/USUExcel;1";
        obj = Components.classes[cid].createInstance();
        obj = obj.QueryInterface(Components.interfaces.IUSUExcel);
        obj.OpenExcel();
   

Разработка » Вызов Excel их FireFox » 15-02-2006 17:00:40

http://www.mozilla.org/projects/plugins … sWin32.zip
Второй раз выручаешь. :;)  ... и это только за сегодня....

Разработка » Вызов Excel их FireFox » 15-02-2006 16:21:07

Ещё одна глупая просьба.
Не могу воспользоваться утилитой xpidl.exe для создания xpt-файла. Похоже, что проблема в том, что у меня нет файлов libIDL-0.6.dll и glib-1.2.dll и неоткуда их взять.
Может кто кинет ссылку. Или почтой... на sutni@mail.ru

Разработка » Вызов Excel их FireFox » 15-02-2006 15:18:43

В принципе можно передавать длинную строку, в которую включать разделители. А С++ уже формировать массив. Но это как-то не по-человечески :)). Да и опасно.
С передачей всего содержимого страницы видится ещё больше сложностей.
Сформировать 2-х мерный массив на JS легко. Вот как описать массив в интерфейсе не понятно.

Разработка » Вызов Excel их FireFox » 15-02-2006 14:16:38

Можно тогда ещё один вопросик?
Как в метод интерфейса передать массив? А точнее двумерный массив. Например строк.

interface IUSUExcel : nsISupports
{
  long PutTable(in string titleTable, in "НУЖЕН 2-мерный массив строк" bodyTable );
};

Ожидаются ли тут проблемы на этапе передачи данных от JS к xpcom?

Нигде не могу найти примера....

Разработка » Вызов Excel их FireFox » 15-02-2006 11:33:11

Aerina пишет

Я не знакома GeckoActiveXObject, так что как разобраться с ошибкой не подскажу. Но могу предложить просто пойти другим путем. http://www.iosart.com/firefox/xpcom/ - сделайте свою компоненту... тут очень хороший пример. Если  Вы просто при нажатии на кнопку тулбара(или каком-то другом событии) создадите элемент своей компоненты и передатите в нее все необходимые данные, то там с помощью COM спокойно запустите Excel.

Большое человеческое спасибо!

Разработка » Вызов Excel их FireFox » 14-02-2006 17:20:29

Поскольку никто не отвечает, расскажу куда мне удалось продвинутся. Может после этого дадут навигацию... :))
Во-первых, изменил CLSID на 00020812-0000-0000-C000-000000000046 - соответствующий Excel2003 (он у меня и установлен).
Во-вторых, установил http://www.iol.ie/~locka/mozilla/plugin.htm#download. Но это как я понял можно было и не делать.
Код теперь выглядит так:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");   
if (window.GeckoActiveXObject){
    var oXL=new GeckoActiveXObject("{00020812-0000-0000-C000-000000000046}");   
    alert (oXL);
    }
       
if(oXL){
    oXL.Visible = true;
    var oWB = oXL.Workbooks.Add();
    var oS = oWB.ActiveSheet;
        }

Alert возвращает "xpconnect wrapped IDispatch".
В памяти повисает Excel. Но его не видно. Ошибка происходит в строке oXL.Visible = true :
Ошибка: uncaught exception: [Exception... "Cannot modify properties of a WrappedNative"  nsresult: "0x80570034 (NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN)"  location: "JS frame :: ..........
То

Разработка » Вызов Excel их FireFox » 13-02-2006 10:38:10

Есть желание вызывать MS Excel из FireFox для представленея неких данных в таблицах екселя.
Написал простенькое расширение, которое пытается вызвать такой код:
if (window.GeckoActiveXObject){
        var oXL=new GeckoActiveXObject("Excel.Application");       
        }
или так:
var oXL=new GeckoActiveXObject("{00024500-0000-0000-C000-000000000046}");

появляется такая ошибка:
Ошибка: uncaught exception: [Exception... "Unable to create an instance of the desired COM classCOM Error Result = 80004002"  nsresult: "0x80570039 (NS_ERROR_XPC_COM_CREATE_FAILED)"  location: "JS frame :: chrome://quasy/content/quasyOverlay.js :: go2Excel :: line 21"  data: no]
Line 21 - это как раз var oXL=new ...
Как можно побороть? Заранее спасибо.

Board footer

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