Mireczki z #webdev, #angularjs i #jquery. Jak sprawdzić, czy zakładka z naszą stroną jest aktywna (otwarta)? $window.onfocus nie odpala u mnie, $window.onmouseover reaguje zbyt wolno.
@Tojtek: Masz kilka możliwości. a) kontroler sam nasł#!$%@? odpowiednich zdarzeń. b) kontroler ma metodę .pause, która jest wywoływana przez jego "rodzica" czy innego managera.
@Ginden: Odnośnie a właśnie miałem taki pomysł. Kontroler nasł#!$%@? zmian w stylu $window.$watch("isWindowVisible", function() {...});, no ale to nie działa. Co do b nie mam pojęcia jak to zrobić. Dziwne, że nie ma prostego sposobu na sprawdzenie, czy okno jest aktywne.
@Tojtek: w ogóle mnie to nie dziwi, że nie ma takiej możliwości ad hoc. Przecież każdy browser działa inaczej, same różnice w odbiorze window są na tyle różne, żeby przyszło do głowy, że to może być coś bardziej skomplikowanego niż zmienna ze stanem od przeglądarki. Zastanów się jak np. rozpatrzyć sytuacje zminimalizowanego okna. To wszystko jest do przemyślenia. Nawet nie zastanawiając się nad tym jak działa JS tylko jego środowisko.
@mortt: Mam zbyt małą wiedzę, żeby aż tak się w to zagłębiać, ale moje naiwne myśli podsuwały jedną, prostą możliwość: - użytkownik widzi stronę i okno przeglądarki jest aktywne - visible - okno przeglądarki jest nieaktywne, zminimalizowane, jest aktywna inna karta/okno - hidden Sprawdzanie tego było mi potrzebne po to, by nie podwajało mi dźwięku powiadomienia, który gra, gdy w chacie (który napisałem dla nauki) jest nowa wiadomość. Gra raz, gdy
@Tojtek - użytkownik widzi stronę i okno przeglądarki jest aktywne - visible zważ na to, że jest to wyłącznie dobra wola twórców przeglądarki czy dadzą Ci takie narzędzie czy nie. (wychodzi to tak na prawdę poza środowisko JS). Teraz następna kwestia to unifikacja oraz jakaś forma workflow. Także sposób zwracania informacji. Niektórzy uznają, że wystarczy boolean true false (user widzi lub nie), a może być też -1 nie widzi w ogóle, 0
@mortt: Czaję już, w czym rzecz. Dzięki, że chciało Ci się tak rozpisywać. :) Rozwiązałem problem podwójnego dźwięku prościej, niż bym podejrzewał na początku. Obyło się bez sprawdzania. :D
To tak ma działać? Jestem na Plutonie bez kombinezonu w samych majtkach, poziom tlenu w atmosferze 0%, temperatura -200 st. C. Moja postać od razu po wyjściu ze statku powinna chyba umrzeć? xd #starfield #gry #bethesda
$window.onfocusnie odpala u mnie,$window.onmouseoverreaguje zbyt wolno.A rozum i godność programisty to Ty masz?
a) kontroler sam nasł#!$%@? odpowiednich zdarzeń.
b) kontroler ma metodę .pause, która jest wywoływana przez jego "rodzica" czy innego managera.
$window.$watch("isWindowVisible", function() {...});, no ale to nie działa. Co do b nie mam pojęcia jak to zrobić. Dziwne, że nie ma prostego sposobu na sprawdzenie, czy okno jest aktywne.Przecież każdy browser działa inaczej, same różnice w odbiorze window są na tyle różne, żeby przyszło do głowy, że to może być coś bardziej skomplikowanego niż zmienna ze stanem od przeglądarki. Zastanów się jak np. rozpatrzyć sytuacje zminimalizowanego okna. To wszystko jest do przemyślenia. Nawet nie zastanawiając się nad tym jak działa JS tylko jego środowisko.
- użytkownik widzi stronę i okno przeglądarki jest aktywne - visible
- okno przeglądarki jest nieaktywne, zminimalizowane, jest aktywna inna karta/okno - hidden
Sprawdzanie tego było mi potrzebne po to, by nie podwajało mi dźwięku powiadomienia, który gra, gdy w chacie (który napisałem dla nauki) jest nowa wiadomość. Gra raz, gdy
- użytkownik widzi stronę i okno przeglądarki jest aktywne - visible
zważ na to, że jest to wyłącznie dobra wola twórców przeglądarki czy dadzą Ci takie narzędzie czy nie. (wychodzi to tak na prawdę poza środowisko JS). Teraz następna kwestia to unifikacja oraz jakaś forma workflow. Także sposób zwracania informacji. Niektórzy uznają, że wystarczy boolean true false (user widzi lub nie), a może być też -1 nie widzi w ogóle, 0
var notify = new Audio("plik.mp3");notify.play();