Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zdarzenia
Forum PHP.pl > Forum > Przedszkole
Fifi209
Mam jakiś dziwny problem...

Znalazłem kod na necie...
[JAVASCRIPT] pobierz, plaintext
  1. function przechwyc(e) {
  2. var kod = (window.event) ? window.event.keyCode : e.which;
  3. /*Zamień nastepną linijkę na swój kod :) */
  4. alert('Nacisnales: ' + String.fromCharCode(kod) + ', kod znaku: ' + kod);
  5. }
  6. document.onkeydown = przechwyc;
[JAVASCRIPT] pobierz, plaintext


Lecz za grosz nie chce on działać. W ogóle nie chce mi działać coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var temp = document.getElementById('cos');
  3. temp.onkeydown = function() { alert(1); }
[JAVASCRIPT] pobierz, plaintext


Pisałem wiele w javascript ale zawsze używałem jquery do "podpinania" zdarzeń.

erix
A w konsoli błędów jest cokolwiek?
zegarek84
Cytat(fifi209 @ 10.08.2009, 23:51:00 ) *
Mam jakiś dziwny problem...

Znalazłem kod na necie...
[JAVASCRIPT] pobierz, plaintext
  1. function przechwyc(e) {
  2. var kod = (window.event) ? window.event.keyCode : e.which;
  3. /*Zamień nastepną linijkę na swój kod :) */
  4. alert('Nacisnales: ' + String.fromCharCode(kod) + ', kod znaku: ' + kod);
  5. }
  6. document.onkeydown = przechwyc;
[JAVASCRIPT] pobierz, plaintext


Lecz za grosz nie chce on działać. W ogóle nie chce mi działać coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var temp = document.getElementById('cos');
  3. temp.onkeydown = function() { alert(1); }
[JAVASCRIPT] pobierz, plaintext


Pisałem wiele w javascript ale zawsze używałem jquery do "podpinania" zdarzeń.


podany przez Ciebie skrypt z neta działa u mnie na mozilli - w jednym ze swoich skryptów mam bardziej uniwersalne rozwiązanie (troszku dłuższa tylko linijka na key):
key = ((window.event) ? window.event.keyCode : e.keyCode ? e.keyCode : e.which);
drugi skrypt aby zadziałał to jeśli jest on wmieszany w html'a skrypt musi znajdować się najwcześniej zaraz za elementem o tym id bądź później (gdyż DOM nie jest cały "podpięty") lub przypisać zdarzenie do tego elementu po zdarzeniu domready aby skrypt ten element mógł wyszukać w drzewie DOM...
[ps.] - ten element wcześniej musisz aktywować winksmiley.jpg

poza tym do podpinania zdarzeń zalecałbym używania w "normalnych" przeglądarkach addEventListener()... w IE jest attachEvent() - tutaj link nie bezpośrednio do tej funkcji by po trochu poruszać inne zagadnienia i jeśli chcesz pisać w czystym js warto poczytać o propagacji zdarzeń winksmiley.jpg
Fifi209
Cytat(erix @ 11.08.2009, 09:08:00 ) *
A w konsoli błędów jest cokolwiek?


Właśnie nic, cisza...

Cytat(zegarek84 @ 11.08.2009, 10:29:47 ) *
podany przez Ciebie skrypt z neta działa u mnie na mozilli - w jednym ze swoich skryptów mam bardziej uniwersalne rozwiązanie (troszku dłuższa tylko linijka na key):
key = ((window.event) ? window.event.keyCode : e.keyCode ? e.keyCode : e.which);

Szkoda, że u mnie nie działa...

Cytat(zegarek84 @ 11.08.2009, 10:29:47 ) *
drugi skrypt aby zadziałał to jeśli jest on wmieszany w html'a skrypt musi znajdować się najwcześniej zaraz za elementem o tym id bądź później (gdyż DOM nie jest cały "podpięty") lub przypisać zdarzenie do tego elementu po zdarzeniu domready aby skrypt ten element mógł wyszukać w drzewie DOM...

Nie jestem takim laikiem, żeby nie wiedzieć tego.

Cytat(zegarek84 @ 11.08.2009, 10:29:47 ) *
poza tym do podpinania zdarzeń zalecałbym używania w "normalnych" przeglądarkach addEventListener()... w IE jest attachEvent() - tutaj link nie bezpośrednio do tej funkcji by po trochu poruszać inne zagadnienia i jeśli chcesz pisać w czystym js warto poczytać o propagacji zdarzeń winksmiley.jpg

Szczerze to chodzi mi tylko o napisanie skryptu do greasemonkey (dodatek do FF) abym na forum mógł użyć w "polu" do pisania skrótu ctrl + m, wtedy przez prompt pobieram nazwę i wstawiam ją między znaczniki manual. Takie po prostu ułatwienie... :<

A chciałem sam to napisać ze względu na fakt, iż nie znalazłem tego na necie...

Ogólnie czysty js jest do d...
zegarek84
Cytat(fifi209 @ 11.08.2009, 12:32:15 ) *
Szczerze to chodzi mi tylko o napisanie skryptu do greasemonkey (dodatek do FF) abym na forum mógł użyć w "polu" do pisania skrótu ctrl + m, wtedy przez prompt pobieram nazwę i wstawiam ją między znaczniki manual. Takie po prostu ułatwienie... :<

A chciałem sam to napisać ze względu na fakt, iż nie znalazłem tego na necie...

Ogólnie czysty js jest do d...

było tak od razu ;p - zwłaszcza pod mozillą różnica jest zasadnicza - pod operą nie...

w mozilli userscript wykonuje się po zdarzeniu DOMContentLoaded - ale co do mozilli najistotniejsze jest, że normalnie skrypty GM są odseparowane od skryptów wykonywanych na stronie ale jest obiekt unsafeWindow przez którą można dostać się do zmiennych i funkcji zdefiniowanych w dokumencie - ogólnie nie polecam używanie tego - jest sposób na obejście tego:
http://wiki.greasespot.net/UnsafeWindow

i jeszcze jedno - skrypty do instalacji pod mozille jak zapewne wiesz muszą mieć rozszerzenie *.user.js - mozilla jak mozilla i u niej tylko tak a zaś z operą jeśli jest takie samo rozszerzenie to skrypt też się ładuje po zdarzeniu DOMContentLoaded, zaś jeśli jest samo rozszerzenie *.js w operze to skrypt ładuje się przed załadowaniem DOM... [a i jeszcze w skryptach musisz mieć zdefiniowane na jakich stronach mają się wykonywać - ale to zapewne wiesz - a jak nie to zajrzyj do gotowych skryptów winksmiley.jpg]

a i jeszcze jedno unsafeWindow jest tylko pod mozillą... ogólnie swego czasu jak mnie wciągli w jedną gierkę trochu tych skryptów na nią i pod php i w js popisałem - ale w js to trza było pisać anonimowe obiekty i odpowiednio zmienne by nie było ich w document bo czasem były w grze załączane skrypty "szpiegowskie" na niedozwolone skrypty - dlatego też kilku znajomym napisałem parser php żeby potem bez obaw urzywali dowolnych skryptów js które oczywiście nie pobierają ze strony nadmiernych ilości danych...
Fifi209
Ok udało się!

Jakby kogoś interesował skrypt:

[JAVASCRIPT] pobierz, plaintext
  1. // ==UserScript==
  2. // @name Skróty
  3. // @namespace http://localhost/
  4. // ==/UserScript==
  5.  
  6. var ctrl = false;
  7.  
  8. var temp = document.getElementById('ed-0_textarea');
  9.  
  10. temp.addEventListener("keydown",
  11. function przechwyc(e) {
  12. var kod = (window.event) ? window.event.keyCode : e.which;
  13. if (kod == 17) {
  14. ctrl = true;
  15. }else if (kod == 77 && ctrl == true) {
  16. var x = prompt('Nazwa funkcji:');
  17. var str = '+ x + '">' + x + ' ';
  18. temp.value = this.value + str;
  19. ctrl = false;
  20. }else{
  21. ctrl = false;
  22. }
  23. },
  24. false
  25. );
[JAVASCRIPT] pobierz, plaintext


Oczywiście kochane forum nie może wyświetlić wszystkiego poprawnie... jednak po kliknięciu na plain text jest ok. smile.gif

Pozdrawiam, Fifi209.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.