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

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

Разработка » Сохранение массива в памяти при открытии нового окна » 19-12-2009 06:40:22

alrond, может window.opener как то пригадится:
https://developer.mozilla.org/en/DOM/window.opener

Разработка » Возможен ли запуск Firefox из командной стр. в небольшом окне без меню » 17-12-2009 00:54:24

Solo, думаю стоит посматреть методы window, такие как window.open(), window.openDialog(), window.fullScreen().
Подробно все написано здеся:
https://developer.mozilla.org/en/DOM/window.open
https://developer.mozilla.org/en/DOM/window.openDialog
https://developer.mozilla.org/en/DOM/window.fullScreen
А чтоб это все дело запускалось как самостоятельное приложение, то можно написать расширение для ФФ и запускать его например так:
"C:\Program Files\Mozilla Firefox\firefox.exe" -chrome "chrome://site_editor/content/site_editor_.xul"
Сматри документацию там все есть!

Разработка » XMLHTTPRequest.status равен нулю » 14-12-2009 23:42:05

Royan, а что если взамен свойства status истользовать statusText ???
Например:

Выделить код

Код:

var x = new XMLHttpRequest();
x.onreadystatechange = function()
{
    if(x.readyState == 4)
    {
       if(x.status == 302)
       {
           alert('302');
       }
       if(x.statusText == 'Found')
       {
           alert('Found');
       }
    }
}
x.open('GET','http://www.google.ru',true);
x.send(null);

Разработка » Возможно ли сделать следующее...? » 14-12-2009 00:47:33

Eternity_aoi, я те помогу, но чуть чуть... ;)

Выделить код

Код:

var body = 'op=GenerateGuid&txtGuid=&btnGenerateGuid=Generate+GUID';
var x = new XMLHttpRequest();
x.onreadystatechange = function()
{
    if(x.readyState == 4)
    {
       if(x.status == 200)
       {
           get_GUID(x.responseText);
       }
    }
}
x.open('POST','http://www.hoskinson.net/GuidGenerator/default.asp',true);
x.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
x.setRequestHeader('Content-Length','54');
x.send(body);

function get_GUID(guid)
{
    var $_01 = guid.indexOf('value="{')
    if($_01 != -1)
    {
       guid = guid.substr($_01+7,38)
       alert(guid); //Выводит GUID
    }
}

Нужный тебе GUID находится в переменной guid. Чтоб разобраться с четными или нечетными цыфирами идем сюды и учимся http://www.w3schools.com/ ... :)

Разработка » Взаимодействие расширения с внешней программой » 13-12-2009 16:47:41

TLK, советую посмареть Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); ... мож поможет
http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/nsIProcess

Разработка » Поиск документации по разработке расширений » 05-11-2009 12:47:30

Скажу личное мнение, я в фф не гуру, но лучший мануал это исходный код других расширений
Еще помогает еще это: http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/

Разработка » Загрузка картинки со страницы на сервер с помощью JS » 24-10-2009 12:58:30

Kos если код заточен только под фф то можно сделать так:

Выделить код

Код:

var img = document.getElementById("img");

var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var context = canvas.getContext('2d');
context.drawImage(img,0,0);

var data = canvas.toDataURL("image/png");

Метод toDataURL() вернет в переменную data строку, закодированую через base64, ее можно передать на сервак... если формат png не подходит можно юзать jpeg canvas.toDataURL("image/jpeg");
Ну а дальше на серваке уже сделать декод строки и все ;)

Можно и так:

Выделить код

Код:

var img = new Image();
img.src="http://www.site.ru/img.png";
img.onload=function()
{
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var context = canvas.getContext('2d');
    context.drawImage(img,0,0);
    var data = canvas.toDataURL("image/png");
}

Архив тем » Firefox и iMacros... » 06-10-2009 12:28:22

Что то типа этого имелось в виду???

Выделить код

Код:

window.alert=function()
{
    
}

Разработка » XULrunner нажатие кнопок и ссылок » 23-09-2009 02:28:40

be@ver
А вызов метода click() обезателен? Вот так можно сделать?

Выделить код

Код:

var a = document.getElementById('test_a');
a.onclick=function()
{
    a.style.border = "1px solid red";
    // Делаем что нада 
}

Где находится ссылка, в html документе или непосредственно в xul и прописан как <html:a> ???

Разработка » nsIServerSocket чтение из transport.openInputStream(0,0,0) » 15-09-2009 16:18:21

Все, разобрался! :) Помог код POW. Теперь ФФ слушает заданый порт, читает сообщения от клиента и отсылает клиенту отвтеные сообщения :) Класс, ФФ красатуля!

Вот готовое решение:
[code]var sS;
function server_02()
{
   sS_Listener =
   {
      onSocketAccepted : function(socket, transport)
      {
         server_get_data(socket, transport);
      },
      onStopListening : function(socket, status)
      {
         //...
      }
   };
   sS = Components.classes["@mozilla.org/network/server-socket;1"].createInstance(Components.interfaces.nsIServerSocket);
   sS.init(7055,false,-1);
   sS.asyncListen(sS_Listener);
}

function server_get_data(socket, transport)
{
   var i_put_tr = transport.openInputStream(0,0,0);
   var o_put_tr = transport.openOutputStream(0,0,0);

   var i_put_bin = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
   i_put_bin.setInputStream(i_put_tr);
   transport.setTimeout(1, 5);

   var dataLi

Разработка » XPCOM: Определить класс » 13-09-2009 09:26:04

Можно тут посмареть : http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/
Если имеллось в виду Components.classes[""]...

Разработка » nsIServerSocket чтение из transport.openInputStream(0,0,0) » 13-09-2009 05:26:08

Чтоб считать данные присланные серверу, именно когда они пришли, использовал атрибут inputStream в onDataAvailable (см. Server_02)

Выделить код

Код:

onDataAvailable: function(request, context, inputStream, offset, count)
{         
     var read_is = inputStream.QueryInterface(Components.interfaces.nsIInputStream);
     var read_sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
     read_sis.init(read_is);
     
     alert(read_sis.read(count)); //Выведет переданные от клиента данные

}

Не знаю на сколько это правильно, но это работает. Теперь сервер считывает данные только когда они пришли.
Но! Клиенту приходится многократно посылать серверу сообщения, до тех пор пока сервер не пришлет ему какиенить данные обратно. При этом сервак "видит" все подключения клиента.
Попробывал отсылать серверу сообщения с помощью nsIAsyncOutputStream, но это не сильно помогает, сиравно приходится отсылать много сообщений.

Разработка » nsIServerSocket чтение из transport.openInputStream(0,0,0) » 12-09-2009 10:12:22

Всем привет!
Пытаюсь "поднять сервер" на фф через nsIServerSocket. Исключительно в образовательных целях.
Но столкнулся с проблемой. Не получается нормально считать данные из openInputStream(0,0,0).
Точнее данные то приходят, то не приходят. Попытался реализовать чтение данных двумя способами server_01, server_02
Так server_01, иногда считывает данные, иногда нет.
В server_02 попытался решить проблему через nsIInputStreamPump и onDataAvailable, считать данные не получаица, хотя атрибут count передаваемый onDataAvailable видит число переданных данных.

Делаю под Xulrunner (ver. 1.9.2.3506) / ОС WinXP

//----------------------------------------------------//
Client:
[code]function client(host,port,outputData)
{
    alert(host+port+outputData);
    var tr_service = Components.classes["@mozilla.org/network/socket-transport-service;1"].getService(Components.interfaces.nsISocketTransportService);
    var tr = tr_service.createTransport(null,0,host,port,null);
   
    var i_put_tr =

Разработка » SQLite кодировка » 22-08-2009 06:36:16

Infocatcher, спасибо помогло!!! Тему можно закрыть :)

Разработка » SQLite кодировка » 22-08-2009 06:14:30

Делаю все таким образом:

[code]var $db_file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get('ProfD', Components.interfaces.nsIFile);
    $db_file.append("new_db.sqlite");
   
var sqlite = Components.classes["@mozilla.org/storage/service;1"].getService(Components.interfaces.mozIStorageService);
var $db=sqlite.openDatabase($db_file);

var $request=$db.createStatement("CREATE TABLE IF NOT EXISTS test (id TEXT, name TEXT)");
    $request.execute();

var $request=$db.createStatement("INSERT INTO test VALUES ('id_00','English string')");
    $request.execute();
   
var $request=$db.createStatement("INSERT INTO test VALUES ('id_01','Русская строка')");
    $request.execute();
   
var $request=$db.createStatement("SELECT * FROM test");

var str=new String();
    while($request.executeStep())
    {
        let id=$request.row.id;
        let name=$request.row.name;
        str+='id : '+id+'   name : '+name+'\n';
    }
    ale

Разработка » SQLite кодировка » 22-08-2009 05:42:15

Всем привет! Учусь создавать расширения для ФФ +  тута первый раз, просьба не пинать и если пропрусь...
Вопщем решил поработать с SQLite, когда ввожу в БД рускую строку, то в БД потом кракозяблы...
Пробывал применить nsIScriptableUnicodeConverter, но видимо делаю это не правильно.
Подскажите пожалуйста куда копать...

Board footer

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