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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

Разработка » открыть окно XUL и получить возможность управлять xul содержимым » 15-07-2009 14:37:42

Ёсъ пишет

Пытаюсь сделать тоже самое, вызвать диалог из c++. Но я пошёл другим путём:

Выделить код

Код:

nsCOMPtr<nsIWebBrowser> pBrowser (do_GetService("@mozilla.org/embedding/browser/nsWebBrowser;1"));

nsCOMPtr<nsIDOMWindow> domWindow;
pBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));

nsCOMPtr<nsIDOMWindowInternal> domWindowInt;
domWindowPrivate->GetPrivateRoot(getter_AddRefs(domWindowInt));

а уже из domWindowInt пытаюсь вызвать openDialog(.....);

но проблема в строке с методом GetContentDOMWindow, после неё domWindow нуловый.
может кто-нибудь знает в чём проблема?

Попробуем так https://developer.mozilla.org/en/Mozilla_embedding_APIs_overview
[code]      nsresult rv;
      nsCOMPtr<nsIBaseWindow> baseWindow;
      nsCOMPtr<nsIWebBrowser> webBrowser;

      // Create a nsWebBrowser instance...
      webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
      if (NS_FAILED(rv)) return rv;

      // Give the WebBrowser a pointer to the embedding component

Разработка » FIREFOX - IE -> insertBefore » 14-07-2009 16:56:20

А что ваш скрипт делает на чужом сайте?

Разработка » Поток (Thread) завершился или нет? Как узнать? » 17-06-2009 11:53:02

https://developer.mozilla.org/en/NSPR_API_Reference/Threads

Как узнать? Thread еще работает, или уже нет (просто узнать, не блокируясь PR_JoinThread -ом)?

Разработка » window.blur() в FF » 04-05-2009 22:09:12

<script language="javascript">
function w() {
    var w = window.open('test2.html');
    window.focus();//w.blur();
    return true;
}
</script>

Разработка » urlencode firefox escape » 21-04-2009 10:34:19

mozdev пишет

а как можно сделать это средствами самого броузера firefox?

К чему такие крайности?

Отправляйте не GET-ом, а POST-ом.

Разработка » urlencode firefox escape » 21-04-2009 01:04:24

А на сервере надо выполнить команду urldecode (Будь остарожен при работе с базой данных и тому подобное) http://www.php.su/functions/?f=urldecode&choice=info
И все станет на свои места.
Наверное uri не может содержать такой символ, но может содержать символ "%" и циферки. Кстати, благодаря этому можно и ироглифы в uri писать

Разработка » Автоматический Enable тулбара » 16-04-2009 00:10:17

Судя по вашему вопросу, вы не знакомы с XUL и его тегом <overlay>.
Постарайтесь найти в своем коде что то типа
<overlay ... xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" ...>
  ...
  <toolbox ... id="navigator-toolbox" ...>
    ...
    <toolbar id="идентификатор Вашего тулбара" collapsed="false">
    ...
  </toolbox>
  ...
</overlay>

Программы и ОС » Проблема с вызовом exec() из php на linux » 14-04-2009 12:15:22

Предположу, что:
1) Вероятней всего http://php.su/functions/?cat=exec
Типа

Также учитывайте, что в безопасном режиме вы должны учесть директиву safe_mode_exec_dir

2) Быть может ваше

echo exec(“whoami”);

превращается во что-то типа

echo exec(“C: //Program%20Files/Server/whoami”);

Разработка » Как подключиться к named pipe » 08-04-2009 15:10:12

Подключиться к пайпу получилось - см ссылку по теме выше;

Смотрим выше:

http://forum.mozilla-russia.org/viewtopic.php?id=19899
но предложенный там вариант не работает (возникает ошибка настроке с initWithPath - не может найти путь к файлу).

Сударь, определитесь.

А по поводу

try-catch

Так у вас там ошибка между 5 и 6 строкой. Вы вызываете не тот компонет.

Разработка » регистрация xpcom-компонент в составе расширения для FireFox » 08-04-2009 11:07:53

Delivron пишет

Печально, если так... Мне-то как раз надо, чтобы dll всегда подгружалась, поскольку я использую ее для взаимодействия с внешним приложением. Т.е. мне не требуется вызывать ее интерфейсы из браузера. Может быть, все-таки есть способ заставить ее грузиться всегда?

Очень даже весело.Только если это было бы не так, то и для FF было бы "BHO" как в IE.

И оно есть! Поэтому, те кто пишут, что IE опасен своим BHO и поэтому FF лучше - заблуждаются.

Если вы осилите (и поймете) эту статью (всю) http://www.mozilla.org/projects/xpcom/book/cxc/html/newbookTOC.html , то на этот форум будете заходить реже :( .

Здесь используется nsICategoryManager для регистрации xpcom-startup.

Разработка » Как подключиться к named pipe » 08-04-2009 10:49:17

Чтобы найти путь к файлу, нужно начать поиск с начала координат, например директории "Рабочий стол".
Тогда в коде программы для WINAPI SHGetSpecialFolderPath будет CSIDL_DESKTOP,
а для расширеня FF адрес файла будет начинаться со слов "Desktop/1.txt"

Разработка » XMLHTTPRequest в дополнении для FF2 и FF3 » 08-04-2009 03:00:00

r.onload=function (ev)

А Это откудого взято?

http://ru.wikipedia.org/wiki/XMLHttpRequest
Бери, не промахнешся (если только для FF, то выкинь часть кода для IE)
[code]var req;

function loadXMLDoc(url)
{
    req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }

    if (req) {
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    }
}

function processReqChange()
{
  try { // Важно!
    // только при состоянии "complete"
    if (req.readyState == 4) {
        // для статуса "OK"
        if (req.status == 200) {
            // обработка ответа
        } else {
            alert("Не удалось получить

Разработка » регистрация xpcom-компонент в составе расширения для FireFox » 08-04-2009 02:44:27

Первый раз она подгружалась для регистрации.(наверно)
После регистрации FF знает, что в такой-то DLL есть такие-то компоненты.
Теперь эта библиотека будет подгружена, только если ты вызовиш нужный интерфейс, или чего то там еще.
Вызовиш,например, из javascript.

Разработка » Какой способ менее кривой для создания хранилища ? » 08-04-2009 02:33:40

Если данных мало, и они не накапливаются, то nsIPrefBranch (что то вроде реестра виндоус, только для всех операционных систем). Записи в этом "реестре" можно увидеть по адресу about:config

Иначе: nsILocalFile. Просто записывать в общий фаил.

Разработка » открыть окно XUL и получить возможность управлять xul содержимым » 07-03-2009 17:42:20

Может кто скажет:
Как с помощью С++ можно "построить" диалоговое окно браузера FireFox?

P.S: Понять природу хотелось бы

Разработка » Аналог window.document.readyState » 06-03-2009 22:41:03

Но не очень понятно, где найти этот интерфейс (в XUL-Runner 1.9 такого header-файла нет).

nsISessionStore Этот интерфейс является не окончательным (unfrozen - не замороженный). Поэтому в SDK не создан *.h (nsISessionStore.h ) фаил. Его можно собрать из фаила  *.idl (nsISessionStore.idl).

Для создания nsISessionStore.h используется програмка  (sdk/bin/XPIDL.exe).

Что то вроде этого:
<путь до sdk/bin>/XPIDL.exe -m header -L"<путь до sdk/idl>" "<путь до nsISessionStore.idl>/nsISessionStore.idl"

В результате будет создан В ТЕКУЩЕЙ ДИРЕКТОРИИ header фаил (nsISessionStore.h)

Но есть вероятность, что этот интерфейс изменится в следующих версиях, и тогда ... :sick:

Разработка » открыть окно XUL и получить возможность управлять xul содержимым » 06-03-2009 14:39:29

XPCOM компонент на С++.
Как открыть диалоговое окно xul( window.openDialog(.....,args) ), но из С++?
Как, потом, получить возможность влиять на внешний вид окна (влиять на xul элементы окна)?


В этом коде nsIWindowWatcher::OpenWindow возвращает nsIDOMWindow, через который не удается влиять на xul элементы:

Выделить код

Код:

nsCOMPtr<nsIServiceManager> servMan;
			nsresult rv = NS_GetServiceManager(getter_AddRefs(servMan));
			NS_ENSURE_SUCCESS (rv, 1);

			nsCOMPtr<nsIWindowWatcher> window;
			rv = servMan->GetServiceByContractID("@mozilla.org/embedcomp/window-watcher;1",
				NS_GET_IID(nsIWindowWatcher),
				getter_AddRefs(window));
			NS_ENSURE_SUCCESS (rv, 2);


			nsCOMPtr<nsIDOMWindow> domWindow;
			rv=window->OpenWindow(nsnull,"chrome://ext/content/file.xul","Name","dialog=no,chrome,centerscreen,scrollbars=yes,resizable=yes",nsnull,getter_AddRefs(domWindow));
			NS_ENSURE_SUCCESS (rv, 7);

Разработка » Событие загрузки сайта » 08-02-2009 00:51:16

Shutnik пишет
lemax пишет

Это событие срабатывает и при загрузки <iframe>

а iframe это не dom-документ?

в обработчике нужно написать что-то вроде:

Выделить код

Код:

var doc = event.originalTarget;
		var win = doc.defaultView;
		if(win.parent != win)
			return;

Я так и поступил. Думал проще будет решение

Выделить код

Код:

function newurl (e)
{
	try
	{
		var doc=e.originalTarget;
		var tmp_doc=null;
		if(doc instanceof HTMLDocument && doc.location.href.indexOf("http")==0)
		{
			for(var i=0;(tmp_doc=gBrowser.browsers.item(i))!=null && tmp_doc.contentDocument!=doc;i++){};// Это я здесь перебираю все вклади браузера. И сравниваю их с документом, вызвавшим событие
			if(tmp_doc!=null )
			{

			}
		}
	}
	catch(event)
	{
alert("Exep newUrl="+event)
	}
}

Разработка » Событие загрузки сайта » 04-02-2009 16:28:12

Это событие срабатывает и при загрузки <iframe>

Выделить код

Код:

gBrowser.addEventListener("DOMContentLoaded", ext.event_newurl, true);

Тогда зачем нужен DOMFrameContentLoaded ?
из https://developer.mozilla.org/en/Gecko-Specific_DOM_Events

И как как получить событие загрузки только сайта?

Разработка » Ассоциативный массив с объектом XUL елемента в качестве ключа » 03-02-2009 01:26:45

1) Как в массиве javascript в качестве ключа применить переменную типа "XUL Element"?

2) Каждый элемент DOMa имеет свой ID. Если его не указать явно, то система создает свой. Если я прав, то как получить реальный ID
элемента, не указанного явно в атрибутах.
Спасибо,



Хочу: Для каждого нового элемента <browser> из <tabbrowser> создавать специальный объект javascript. По закрытии вкладки браузера удалять специалный объект,

Типа
[code]var Ext_PRG=
{
    jc : [], //массив хронящий специальный объект для каждой вкладки браузера "<browser>"
   
    init : function()
    {
        this.jc=[];
        gBrowser.tabContainer.addEventListener("TabOpen",Ext_PRG.tabsChanged,false);
        gBrowser.tabContainer.addEventListener("TabClose",Ext_PRG.tabsChanged,false);
        Ext_PRG.addTabBrowser(gBrowser.selectedBrowser);
    },
    uninit : function()
    {
        gBrowser.tabContainer.removeEventListener("TabOpen",Ext_PRG.tabsChanged,false);
        gBrowser.tabContainer.removeEventListener("TabClose",Ext_PRG.tabsChanged,false);
        Ext_PRG.delTab

Разработка » Активно ли окно ФФ » 28-11-2008 17:21:38

:D Сначало сам озадачился вопросом. Но...

Выделить код

Код:

window.addEventListener("focus",function(){alert("FOCUS")},false);
window.addEventListener("blur",function(){alert("BLUr")},false);

Это была суть решения, а теперь решение

Выделить код

Код:

var IsWindowActive;//глобальная

window.addEventListener("focus",function(){IsWindowActive=true;},false);
window.addEventListener("blur",function(){IsWindowActive=false;},false);

Board footer

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