Jak migać kartą Firefox na zmianę zawartości DOM?
Moderator: Pomocy?!
Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Przeszukałem już cały Internet i nigdzie nie znalazłem DZIAŁAJĄCEJ metody... Bazowałem na JQuery, "gołym" JavaScript ale nie bawiłem się w C/C++. O co mi chodzi?
Problem do rozwiązania:
Firma w której pracuje posiada swój system kolejkowania zgłoszeń (OTRS-based). W momencie nadejścia nowego zgłoszenia, karta z otwartym systemem zgłoszeń ma "migać", a gdy okno jest zminimalizowane, to migać ma całe okno w pasku zadań. Mój dodatek potrafi już zlokalizować na której karcie znajduje się system OTRS, zapamiętuje jego tabIndex (numer karty). Nawet potrafi odpalić na nowej karcie system kolejkowania zgłoszeń, gdy takowego nie uruchomiono jeszcze. Potrzebuję informacji, albo wręcz wskazówek, jak:
a. wykryć zminimalizowane okienko (mogę na przykład w funkcji sprawdzającej zmiany w elemencie DOM co jakiś czas, sprawdzić, czy okno nie jest zminimalizowane i jeśli jest a nadeszło nowe zgłoszenie, to muszę gdzieś mieć tą informację)
b. Wykryć nieaktywną kartę (mogę na przykład w funkcji sprawdzającej zmiany w elemencie DOM co jakiś czas, sprawdzić, czy karta jest aktywna i jeśli nie jest a nadeszło nowe zgłoszenie, to muszę gdzieś mieć tą informację)
c. W jaki sposób wykorzystać powyższe informacje aby "migać" kartą/oknem.
Niestety nie znalazłem obiektów i ich właściwości (podejrzewam, że będą to obiekty window oraz gBrowser), które pozwolą mi na zmianę zachowania. Alternatywą dla "migającej" karty może być np. zmiana tytułu wyświetlanego na karcie na treść "MASZ NOWE ZGLOSZENIE!".
Będę dźwięczny, jeśli pomożecie mi Mistrzowie Mozilli!
(ważne info: dodatek do Mozilli Firefox, wersja 22.0, metoda: podmiana wyglądu przeglądarki przez plik "overlay.xul" i skrypt "overlay.js" - dodaje tylko menu i obsługę zdarzeń).
DZIĘKUJĘ!
Michał
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3)
- dexter
- Moderator
- Posty: 8321
- Z nami od: 02 października 2004, 21:30
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Dziękuję za zainteresowanie się tematem.
Nie. Na Twoje pytanie odpowiem również pytaniem: Cóż to jest jetpack?
Pozdrawiam,
Michał
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3)
https://wiki.mozilla.org/Jetpack
- dexter
- Moderator
- Posty: 8321
- Z nami od: 02 października 2004, 21:30
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Tylko, że nadal nie wyjaśniłeś mi jak migać kartą nadal moje pytania pozostają aktualne, bo "menu" dodałem w xul'u. Mi chodzi o automatyczną reakcję na wybranej stronie internetowej (na wybranej karcie).
Michał
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20130729 Firefox/25.0
- dexter
- Moderator
- Posty: 8321
- Z nami od: 02 października 2004, 21:30
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
- Kod: Zaznacz cały
gBrowser.mTabContainer.childNodes[0].style.setProperty('background-image','-moz-linear-gradient(rgba(255,255,255,.7),rgba(5,50,50,.5),rgb(5,50,50))');
gBrowser.mTabContainer.childNodes[0].style.setProperty('background-image',''); // powrót do domyślnego
Oraz zasugerować wywoływanie tego przy pomocy workerów lub nsITimera w odpowiednich odstępach czasowych.
W temacie viewtopic.php?p=201574#p201574 wspomniany był jeszcze inny sposób na zmianę koloru kart, ale chyba trzeba go zaktualizować, by działał z nowszymi wersjami Fx.
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Jeszcze pytanie - jak (np. co 30sek) sprawdzić, czy nie zmieniło się drzewo DOM dokumentu (ale konkretnego elementu Div, czy nie dodano wiersza tabeli, w której tekst jest pogrubiony)? Reakcja "migającej karty" ma być właśnie przy nadejściu tego zgłoszenia, a przy aktywacji karty (przełączeniu na system OTRS) karta ma przestać "migać". Tutaj nic nie wymyśliłem niestety a jestem początkujący w tym.
Dziękuję z góry.
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Pewnie znów dobrym pomysłem, będzie podejrzenie jak inni to zrobili - poszukaj np. dodatków ze słowami kluczowymi: notifier, notification(s), notifies.
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Tak jeszcze pytanie... nie miałem wcześniej styczności z Pythonem. Czy po instalacji Pythona jest do niego jakiś edytor języka i czy łatwo zaimplementować SDK od Mozilli?
Podejrzewam, że Python bazuje na C++. Am I right?
(Czy istnieje metoda na "zablokowanie karty"? Chodzi mi o to, aby na 1 karcie odpalić OTRSa z linka i aby ta karta była zablokowana - nie można jej przesunąć ani zamknąć ani najlepiej zmienić adresu ręcznie)
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Jetpack (czy raczej Add-on SDK) mówi mi coś takiego:
- Kod: Zaznacz cały
Traceback (most recent call last):
File "resource://gre/modules/NetUtil.jsm", line 137, in
aCallback(pipe.inputStream, aStatusCode, aRequest);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/net/url.js",
line 42, in
resolve(data);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 122, in then
else result.then(resolved, rejected)
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 54, in effort
try { return f(options) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 142, in resolve
while (pending.length) result.then.apply(result, pending.shift())
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 36, in then
return { then: function then(resolve) { resolve(value) } }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 116, in resolved
function resolved(value) { deferred.resolve(resolve(value)) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/core/promise
.js", line 54, in effort
try { return f(options) }
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/addon/runner
.js", line 91, in onLocalizationReady
run(options);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/addon/runner
.js", line 123, in run
let program = main(options.loader, options.main);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 287, in main
return load(loader, module).exports;
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/anszua-reminder/lib/main.js",
line 1, in
require("widget").Widget({
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 273, in require
freeze(load(loader, module));
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/widget.js",
line 48, in
const windowsAPI = require("./windows");
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 273, in require
freeze(load(loader, module));
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/windows.js",
line 11, in
module.exports = require('./windows/firefox');
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 273, in require
freeze(load(loader, module));
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/windows/fire
fox.js", line 11, in
{ WindowDom } = require('./dom'),
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 273, in require
freeze(load(loader, module));
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/windows/dom.
js", line 8, in
const { getMode } = require('../private-browsing/utils');
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 273, in require
freeze(load(loader, module));
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 200, in load
evaluate(sandbox, module.uri);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/toolkit/loader.j
s", line 174, in evaluate
: loadSubScript(uri, sandbox, encoding);
File "resource://jid1-gllfcvywor3e7g-at-jetpack/addon-sdk/lib/sdk/private-brow
sing/utils.js", line 24, in
pbService = Cc["@mozilla.org/privatebrowsing;1"].
TypeError: Cc['@mozilla.org/privatebrowsing;1'] is undefined
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Czy ktoś może mi odpowiedzieć na pytanie:
Czy istnieje metoda na "zablokowanie karty"? Chodzi mi o to, aby na 1 karcie odpalić OTRSa z linka i aby ta karta była zablokowana - nie można jej przesunąć ani zamknąć ani najlepiej zmienić adresu ręcznie
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; rv:24.0) Gecko/20130716 Firefox/24.0
- dexter
- Moderator
- Posty: 8321
- Z nami od: 02 października 2004, 21:30
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Teraz problem mam innego typu: jak sprawdzić NA KONKRETNEJ KARCIE (znam jej indeks i mam obiekt karty w pamięci) czy we wczytanej treści TEJ KARTY znajduje się element DOM o konkretnym ID oraz jak sprawdzić czy jakiś element tabeli (element DOM) w tej samej treści jest pogrubiony?
Słabo mi idzie wyszukiwanie w google tej treści (szukam już 3h)...
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
- Kod: Zaznacz cały
alert(gBrowser.getBrowserForTab(gBrowser.mTabContainer.childNodes[5]).contentDocument.getElementById("topLogoBox").innerHTML);
Mam nadzieję, że rozgryziesz komendę - ale na wszelki wypadek w skrócie - dla karty z indeksem #5 tworzony jest obiekt gBrowser, przez który dostaję się do zawartości karty, a dalej już jak w zwykłym JS namierzanie węzła po jego ID i wyświetlenie kodu HTML z wnętrza tego elementu. W przykładzie karta ze stroną zawierającą ten wątek była u mnie 5., a dalej wybrałem jakiś pierwszy z brzegu identyfikator - topLogoBox - więc możesz też przetestować na bieżącej stronie.
Z wykrywaniem pogrubienia - musisz podejrzeć html i coś wykombinować w zależności jak to jest zrobione... Może wystarczy sprawdzić klasę węzła, a może "regexpem" przeanalizować kod HTML danego węzła, albo sprawdzić jego dzieci lub jeszcze jakoś inaczej.
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Teraz się pobawię z wykrywaniem pogrubienia dam znać o efektach lub problemach
EDIT 21:00
UDAŁO SIĘ!
Brakuje ostatecznych elementów, ale w tym celu muszę wiedzieć:
a. Jak migać oknem przeglądarki (w pasku zadań systemu Windows), gdy okno jest zminimalizowane?
b. Jak uniemożliwić użytkownikowi wyłączenie paska statusu przeglądarki (addon-bar) lub sprawdzić czy został ukryty i jeśli tak to włączyć go spowrotem?
DZIĘKI ZA POMOC Z GÓRY!
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0
- Kod: Zaznacz cały
var addonbar = document.getElementById("addon-bar");
if (addonbar == "addon-bar")
toolbar.collapsed = false;
- teo
- Moderator
- Posty: 2409
- Z nami od: 16 czerwca 2004, 09:15
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Natomiast co do migania:
- Kod: Zaznacz cały
window.getAttention();
PS: @johny_noc: Jeśli zadajesz nowe pytania, to możesz śmiało zamieszczać post pod postem (przynajmniej na tym forum) - bo w przeciwnym razie łatwo przeoczyć, że coś dopisałeś, jeśli zdążyło się przeczytać post przed jego edycją.
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
@Mirek - ta komenda powoduje miganie, czy sprawdza czy okno jest zminimalizowane?
- johny_noc
- Posty: 16
- Z nami od: 30 lipca 2013, 17:27
Odp: Jak migać kartą Firefox na zmianę zawartości DOM?
Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
Natomiast wykrywanie minimalizacji, to przez nasłuchiwanie, czy wystąpiło zdarzenie sizemodechange - https://developer.mozilla.org/en-US/doc ... dow_events
- Mirek
- Moderator
- Posty: 2156
- Z nami od: 09 sierpnia 2007, 20:37
Wróć do Programowanie z użyciem technologii Mozilli
Kto jest online
Zarejestrowani użytkownicy: Bing [Bot]