• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego self.focus() i self.blur() nie powodują reakcji po stronie przeglądarki?

VPS Starter Arubacloud
0 głosów
469 wizyt
pytanie zadane 20 marca 2016 w JavaScript przez Adam R Nowicjusz (170 p.)
Witam serdecznie,

Uczę się właśnie o obsłudze zdarzeń i kontroli kolejności wyświetlania okien za pomocą JS. Przerabiam przykład z jednej z popularnych książek ale niestety u mnie on nie działa. Chodzi o zastosowanie blur() i focus() w celu zepchnięcia okna na ostatnią pozycję lub wyciągnięcie go na pierwszą aby było zawsze widoczne.

W kodzie html nie ma właściwie nic istotnego więc go nie wklejam, plik js podpięty jest na pewno prawidłowo.

Kod js wygląda następująco:

window.onfocus = moveBack;

function moveBack() {

self.blur();

}

Jest to przykład żywcem przepisany z książki, tym bardziej irytuje to że nie powoduje on żadnej reakcji. Sprawdzałem na dwóch przeglądarkach tę oraz odwrotną wersję z self.focus() dla zdarzenia onblur. Także nie działa. Bardzo proszę o podpowiedź.

2 odpowiedzi

0 głosów
odpowiedź 20 marca 2016 przez Comandeer Guru (599,730 p.)
wybrane 22 marca 2016 przez Adam R
 
Najlepsza

Dzisiaj do tego stosuje się zdarzenie visibilitychangehttps://www.igvita.com/2015/11/20/dont-lose-user-and-app-state-use-page-visibility/

Poza tym ten kod przecież nic nie powoduje… Zblurowanie okna nigdzie go nie spycha.

komentarz 20 marca 2016 przez Adam R Nowicjusz (170 p.)
Dziękuję za link,

Czy kod nic nie powoduje ze względu na jakieś zmiany, które zaszły w JS, czy nigdy nie dało się tego w ten sposób wykonać? Cytując autora książki o której wspomniałem, jak w komentarzu powyżej  "Jeżeli okno przeglądarki przechodzi na pierwszy plan, ta funkcja zmusza je do ponownego powrotu do tła". Jeżeli w książce jest błąd (a to nie pierwszy przypadek jak coś nie działa przepisane żywcem) chętnie dotrę się do wydawnictwa czy autora. Nauka JS na takich przypadkach na razie uczy przede wszystkim cierpliwości, żeby nie powiedzieć dosadniej.
komentarz 20 marca 2016 przez Comandeer Guru (599,730 p.)

Prawdę mówiąc nigdy nie spotkałem się z tym, żeby window.blur coś robilo, ale w specyfikacji jest coś o tym wspomniane:

User agents are encouraged to ignore calls to this blur() method entirely.

Historically, the focus() and blur() methods actually affected the system-level focus of the system widget (e.g. tab or window) that contained the browsing context, but hostile sites widely abuse this behaviour to the user's detriment.

Czyli jak na moje: "w IE5/6 działało" ;) Nie wiem jaką książkę czytasz, ale może podaj jej tytuł i autora, bo prawdę mówiąc mam wrażenie, że to jakieś średniowiecze… 

komentarz 20 marca 2016 przez Adam R Nowicjusz (170 p.)
Jest to "Po prostu JavaScript" Wydanie ósme. Tom Negrino i Dori Smith.

http://helion.pl/ksiazki/po-prostu-javascript-wydanie-viii-tom-negrino-dori-smith,ppjsc8.htm

Będę zatem wdzięczny za opinię czy ta pozycja jest coś warta :)
komentarz 20 marca 2016 przez Comandeer Guru (599,730 p.)
Hmm… Tak patrzę po przykładowym rozdziale i mam wrażenie jakbym się cofnął o 10 lat. IMO na chwilę obecną ta książka jest mocno przestarzała, więc raczej bym nie wczytywał się zbyt mocno.
komentarz 21 marca 2016 przez Adam R Nowicjusz (170 p.)
Jestem wdzięczny za tę informację. Nie jestem przyzwyczajony do nadużywania czyjejkolwiek wiedzy szczególnie w takich miejscach jak to, nie mniej jednak czuję że dopóki tu nie wszedłem trochę błądziłem jak we mgle. Muszę zatem zapytać, bo to w tym momencie mój jedyny trop: z jakiego źródła powinienem czerpać tę wiedzę aby była aktualna? Z książkami jest różnie a w sieci też jest pełno wszystkiego i ciężko pewne fakty zweryfikować. Bardzo chciałbym się uczyć JS a później reszty do obsługi po stronie serwera. Nie jestem też do końca pewien czy PHP czy tego całego CGI. HTML i CSS znam na tyle, że mnie nie ograniczają ale domyślam się że to kropla w morzu. Jakiekolwiek wskazówki są dla mnie na wagę złota :)
komentarz 21 marca 2016 przez Comandeer Guru (599,730 p.)
Polecam blog 2ality.com. Tam też znajdziesz linki do książek autora – obydwie są dostępne za darmo, online. Warto skorzystać, bo facet jest naprawdę kozakiem jeśli chodzi o JS.
komentarz 22 marca 2016 przez Adam R Nowicjusz (170 p.)
Super :) właśnie otwieram, jeszcze raz wielkie dzięki.
0 głosów
odpowiedź 20 marca 2016 przez ScriptyChris Mędrzec (190,190 p.)

Ja bym spróbował zrobić tak:

function moveBack()
{
   alert('cokolwiek');
 }

Jeśli nie wyskoczy alert, tzn że źle podpiąłeś funkcje.

Jeśli alert się pojawi. To zamień self.blur() na this.blur(); albo na window.blur();

P.S. Czy w konsoli pojawiają się jakieś błędy?

komentarz 20 marca 2016 przez Adam R Nowicjusz (170 p.)
Sprawdziłem ponownie podczepiając alert i pięknie się on wywołuje gdy uaktywniam to okno. Wnioskuję zatem, że musi zachodzić "window.onfocus", pomijając fakt, że gdy tylko wywoła się alert, komunikat skutecznie blokuje okno i nie znika aż nie załaduje się zawartości strony ponownie. W konsoli błędów brak. Ani w wersji z this ani z window nic się nie zmienia. Moja obecna wiedza niestety nie pozwala mi zidentyfikować samemu przyczyny braku reakcji przeglądarki. Czy należałoby poddać pod wątpliwość jakość wiedzy zawartej w książce, z której korzystam? Cytując autora niniejszej "Jeżeli okno przeglądarki przechodzi na pierwszy plan, ta funkcja zmusza je do ponownego powrotu do tła". Jestem w kropce :(

Podobne pytania

0 głosów
1 odpowiedź 148 wizyt
+1 głos
2 odpowiedzi 551 wizyt
pytanie zadane 11 lipca 2021 w HTML i CSS przez Kytrap Początkujący (390 p.)
0 głosów
1 odpowiedź 200 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...