Zapis danych
Moderator: Pomocy?!
Zapis danych
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11
[Regulamin forum pkt. 4 - przenoszę - moderator]
- i.eos
Re: Zapis danych
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
i.eos pisze:Czy istnieje sposób na to aby rozszerzenie mialo mozliwosc zapisania danych w pliku lub utworzenia pliku.
Służy do tego interfejs nsIFile. Nie wiem, czy jesteś już zaznajomiony z korzystaniem z interfejsów XPCOM (Components.classes["@mozilla/.."] i tak dalej) - jeśli nie, to pytaj.
Chodzi o to aby napisac funkcje która po zakończeniu działania na dysku zapisze informację (może być w już istniejącym pliku), ale bez zamykania przeglądarki bo coś takiego można zrobić zapisując dane w preferencjach. Może można jakoś wymusić na Firefoxie zapisanie preferencji bez jej zamykania ?
Preferencje są zapisywane natychmiastowo, dlaczego sądzisz, że jest inaczej? W jaki sposób je modyfikujesz? nsIPrefService / nsIPrefBranch?
- Ancestor
- Moderator
- Posty: 1799
- Z nami od: 11 czerwca 2005, 20:25
- Lokalizacja: Sopot
Re: Zapis danych
Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2
Ancestor pisze:Służy do tego interfejs nsIFile. Nie wiem, czy jesteś już zaznajomiony z korzystaniem z interfejsów XPCOM (Components.classes["@mozilla/.."] i tak dalej) - jeśli nie, to pytaj.
Poszukam coś na ten temat.... no chyba że masz jakiś przykład pod ręką
Ancestor pisze:Preferencje są zapisywane natychmiastowo, dlaczego sądzisz, że jest inaczej? W jaki sposób je modyfikujesz? nsIPrefService / nsIPrefBranch?
Używam nsIPrefBranch... może popełniam jakiś błąd... zapisuje w taki sposób:
- Kod: Zaznacz cały
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var element = document.getElementById("enable");
pref.setBoolPref(element.getAttribute("prefstring"), element.checked);
No i zmiany w pliku "prefs.js" widoczne są dopiero po zamknięciu FF.
- eos
- Posty: 12
- Z nami od: 23 kwietnia 2007, 11:25
Re: Zapis danych
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
eos pisze:Ancestor pisze:Służy do tego interfejs nsIFile. Nie wiem, czy jesteś już zaznajomiony z korzystaniem z interfejsów XPCOM (Components.classes["@mozilla/.."] i tak dalej) - jeśli nie, to pytaj.
Poszukam coś na ten temat.... no chyba że masz jakiś przykład pod ręką :)
http://mxr.mozilla.org/mozilla1.8/sourc ... sIFile.idl
Wszystkie interfejsy są zdefiniowane w plikach .idl, wystarczy więc je odnaleźć w kodzie źródłowym Mozilli.
Używam nsIPrefBranch... może popełniam jakiś błąd... zapisuje w taki sposób:
- Kod: Zaznacz cały
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var element = document.getElementById("enable");
pref.setBoolPref(element.getAttribute("prefstring"), element.checked);
No i zmiany w pliku "prefs.js" widoczne są dopiero po zamknięciu FF.
Zgadza się, ale w pamięci są już trzymane nowe wartości i podczas odczytywania danego ustawienia, otrzymasz aktualną wartość. prefs.js ciebie w tym momencie nie obchodzi.
BTW, czy powyższy kod pochodzi z okna opcji rozszerzenia? Jeśli tak, to robi się to inaczej (znacznie prościej).
- Ancestor
- Moderator
- Posty: 1799
- Z nami od: 11 czerwca 2005, 20:25
- Lokalizacja: Sopot
Re: Zapis danych
Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2
Ancestor pisze:Zgadza się, ale w pamięci są już trzymane nowe wartości i podczas odczytywania danego ustawienia, otrzymasz aktualną wartość. prefs.js ciebie w tym momencie nie obchodzi.
Potrzebuje poinformować przy pomocy rozszerzenia skrypt który jest w pythonie i działa na serwerze jako deamon. Najprościej by było aby rozszerzenie tworzyło plik (lub katalog ) a skrypt by sobie to sprawdzał.
Ancestor pisze:BTW, czy powyższy kod pochodzi z okna opcji rozszerzenia? Jeśli tak, to robi się to inaczej (znacznie prościej).
Rozumie, narazie jednak potrzebowałem aby to działało... później zajme się optymizacją. Narazie interesuje mnie informowanie deamona przez rozszerzenie
- eos
- Posty: 12
- Z nami od: 23 kwietnia 2007, 11:25
Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2
- Kod: Zaznacz cały
var ExportFile = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("TmpD", Components.interfaces.nsIFile);
ExportFile.append("plik.txt");
ExportFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
Tworzy plik.txt w katalogu tymczasowym
- eos
- Posty: 12
- Z nami od: 23 kwietnia 2007, 11:25
zapisywanie bierzacej strony
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12
Problem może nie jest zbyt skomplikowany, ale nigdzie nie mogę znaleźć jego rozwiązania:(
Chcę zapisać aktualnie oglądaną stronę do pliku, po wciśnięciu przycisku. Rozszerzenie zrobiłem, zapisywanie jakichś danych działa. Jest tylko jeden mały problem nie potrafię zapisać kodu aktualnie oglądanej strony do pliku. Tzn. nie wiem skąd go wziąć? Próbowałem na setki sposobów z obiektu: "document", ale nic nie wychodziło. Nie wiem czy mam się odwoływać po kolei do elementów obiektu document. Wydaje mi się, że jest jakichś prostszy sposób wykonania tego, ale nie mogę nic znaleźć.
Takie pytanko. Może można skorzystać z jakiegoś API Firefox-a, bo przecież firefox sam w sobie umożliwia zapisywanie aktualnie oglądanej strony, wiec czy nie można by z tego skorzystać? W sumie od niedawna zajmuję się "programowaniem" pod firefox-em i mam tylko ogólny pogląd, ale czy coś takiego jest możliwe?
- silek
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("C:\\filename.html");
var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']
.createInstance(Components.interfaces.nsIWebBrowserPersist);
wbp.saveDocument(content.document, file, null, null, null, null);
- silek
Wróć do Programowanie z użyciem technologii Mozilli
Kto jest online
Zarejestrowani użytkownicy: Bing [Bot], dexter