Xpoint
   [напомнить пароль]

аналог about:config

Метки: [без меток]
2007-05-03 06:09:32 [обр] Иван[досье]

День добрый!

Очень недавно работаю с локальным xul. Хочу сделать, чтобы можно было набрать в строке адреса kkh:user:123, и показать при этом человека(kkh - КтоКудаХодил(статистика с контроллера Perco(карточки доступа для дверей))).

Протокол свой зарегистрировал(отдельное спасибо исходникам Владимира Паланта), "user:123" отлавливаю, а вот как показать, что насчитано?
Сейчас это отдельный файл в kkh/content/user.xul, и если я делаю

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                   .getService(Components.interfaces.nsIWindowMediator)
                   .getMostRecentWindow("navigator:browser");
wm.loadURI('chrome://kkh/content/user.xul');

Всё хорошо, но в строке браузера появляется chrome://kkh/content/user.xul, а мне надо чтобы осталась kkh:user:123.
И каким образом мне передать контроль скрипту в user.xul?
Сама компонента(протокол и его обработка) находится в /kkh/components/TestProtocol.js

спустя 9 минут [обр] Владимир Палант(434/4445)[досье]

Ну у вас же вызывается asyncOpen — так вы и передайте этот вызов в ChromeChannel. То есть что-то типа:

var chromeChannel = ioService.newChannel("chrome://kkh/content/user.xul", null, null);
return chromeChannel.asyncOpen(listener, context);

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

спустя 4 часа 28 минут [обр] Иван[досье]

С первого раза не получилось.
Знание JS ещё хромает.
Я думал будет просто перейти с удаленного XUL на локальный...

Долго пырхался из-за того, что поставил simple-uri в newURI, и мозилла просто на бок заваливалась.

Пока оставил так:

var ios = CC["@mozilla.org/network/io-service;1"].getService(CI.nsIIOService);
return ios.newChannel('chrome://kkh/content/main.xul',null,null);

Работает, правда JS внутри XUL не работает, ругается на syntax error, но уже сдвинулось с мертвой точки.
Спасибо!

Powered by POEM™ Engine Copyright © 2002-2005