Страницы: 1
alrond, может window.opener как то пригадится:
https://developer.mozilla.org/en/DOM/window.opener
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"
Сматри документацию там все есть!
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);
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/ ... :)
…TLK, советую посмареть Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); ... мож поможет
http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/nsIProcess
Скажу личное мнение, я в фф не гуру, но лучший мануал это исходный код других расширений
Еще помогает еще это: http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/
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"); }
Что то типа этого имелось в виду???
be@ver
А вызов метода click() обезателен? Вот так можно сделать?
var a = document.getElementById('test_a'); a.onclick=function() { a.style.border = "1px solid red"; // Делаем что нада }
Где находится ссылка, в html документе или непосредственно в xul и прописан как <html:a> ???
Все, разобрался! :) Помог код 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
…Можно тут посмареть : http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/
Если имеллось в виду Components.classes[""]...
Чтоб считать данные присланные серверу, именно когда они пришли, использовал атрибут 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. Исключительно в образовательных целях.
Но столкнулся с проблемой. Не получается нормально считать данные из 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 =
Infocatcher, спасибо помогло!!! Тему можно закрыть :)
Делаю все таким образом:
[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, когда ввожу в БД рускую строку, то в БД потом кракозяблы...
Пробывал применить nsIScriptableUnicodeConverter, но видимо делаю это не правильно.
Подскажите пожалуйста куда копать...
Страницы: 1