Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Zdarzenia
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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ń.

Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A w konsoli błędów jest cokolwiek?
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


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ć (IMG:style_emoticons/default/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ń (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował zegarek84 11.08.2009, 10:34:05
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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ń (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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...

Ten post edytował zegarek84 11.08.2009, 12:31:05
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/smile.gif)

Pozdrawiam, Fifi209.

Ten post edytował fifi209 11.08.2009, 15:27:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:17