>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Аналог window.document.readyState http://forum.mozilla-russia.org/viewtopic.php?id=32108 |
Kuvaldis > 06-03-2009 16:58:23 |
Всем привет! СУВ, Kuvaldis |
lemax > 06-03-2009 22:41:03 |
nsISessionStore Этот интерфейс является не окончательным (unfrozen - не замороженный). Поэтому в SDK не создан *.h (nsISessionStore.h ) фаил. Его можно собрать из фаила *.idl (nsISessionStore.idl). Для создания nsISessionStore.h используется програмка (sdk/bin/XPIDL.exe). Что то вроде этого: В результате будет создан В ТЕКУЩЕЙ ДИРЕКТОРИИ header фаил (nsISessionStore.h) Но есть вероятность, что этот интерфейс изменится в следующих версиях, и тогда ... |
Kuvaldis > 10-03-2009 14:24:53 |
lemax, попробовал я выкрутиться, но все равно остались проблемы. Выделить код Код:nsCOMPtr<nsISessionStore> sessionStore = do_GetService("@mozilla.org/browser/sessionstore;1"); Т.е. обычное создание объекта сервиса. Выделить код Код:bool CToolBandObj::IsDocumentLoaded(nsIDOMWindow *domWindow) { static const nsEmbedString WindowStateLoaded(L""); bool result = false; nsCOMPtr<nsISupports> rawSessionStore = do_GetService("@mozilla.org/browser/sessionstore;1"); if (rawSessionStore != NULL) { nsresult retval; nsCOMPtr<nsISessionStore> sessionStore = do_QueryInterface(rawSessionStore, &retval); if (sessionStore != NULL) { nsEmbedString windowStateStr; retval = sessionStore->GetWindowState(domWindow, windowStateStr); std::wstring temp = nsEmbedStringToWstring(windowStateStr); result = ((windowStateStr == WindowStateLoaded) == PR_TRUE); } } return result; } в retval возвращался код ошибки - No_INTERFACE. Это поставило меня в тупик. Полез разбираться. При помощи XPCOM Viewer убедился, что данный сервис вообще присутствует в Firefox. НО!!! Guid в Firefox и в сгенерированном файле оказались РАЗНЫЕ!!! Заменил сгенерированный GUID на тот, который показал XPCOM Viewer. Выделить код Код:///* starting interface: nsISessionStore */ //#define NS_ISESSIONSTORE_IID_STR "91f6d650-898d-11dd-ad8b-0800200c9a66" // //#define NS_ISESSIONSTORE_IID \ // {0x91f6d650, 0x898d, 0x11dd, \ // { 0xad, 0x8b, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }} /* starting interface: nsISessionStore */ #define NS_ISESSIONSTORE_IID_STR "58d17e12-a80f-11dc-8314-0800200c9a66" #define NS_ISESSIONSTORE_IID \ {0x58d17e12, 0xa80f, 0x11dc, \ { 0x83, 0x14, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }} Теперь запрос интерфейса nsISessionStore проходит, но идет свал на вызове GetWindowState с кодом ошибки 80570021... В общем, я в шоке. Где я не прав? Столько проблем из-за статуса... СУВ, Kuvaldis |
Kuvaldis > 16-03-2009 17:22:23 |
Вопрос решен, много есть несколько вариантов Gecko 1.9. |