Toon posts:

[JS] Functietoetsen in firefox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik probeer de f1 toets uit te schakelen en er zelf een popup met helpfiles achter te zetten. In explorer gaat alles goed. In Firefox ook dachten wij, alleen nu is er het volgende probleem. De 'P' toets zorgt er ook ineens voor dat de help popup tevoorschijn komt en de P werkt verder niet meer.

De keycode voor de f1 toets is zowel bij firefox als explorere 112
De keycode voor de "p" toets is 80. Zoals je ziet heb ik die keycode 80 al af proberen te vangen en gewoon de knop actief te maken, maar dat werkt helaas ook niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 <script language="JavaScript">
// functie voor de afhandeling van de keypress te doen
function getkey(e) {
  if (!e) e = event;
  var key = e.which || e.keyCode;
  //kijken of de F1 knop ingedrukt wordt ( char 112 )
  if (key == 80) {
    return true;
  }

  if (key == 112) {
      
      window.open('modules/help/help.php?module=<? echo $helppage[1]; ?>', '0', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=800,height=600,left = 176,top = 132');
    // kijken of de knop te cancelen is
    if (e.cancelable) e.preventDefault();
    // anders eromheen werken en cancelen
    else {
    e.keyCode = 0;
    e.returnValue = 0;
    e.cancelBubble = false;
    }
    // andere functies van die knoppen uitschakelen
    return false;
  }
  // als het niet de f1 knop is, dan de return van die knop inschakelen
  else return true
}
// functie om de knop af te vangen die ingedrukt wordt
if (document.all) {  // IE
    document.onkeydown = getkey;
    document.onhelp = function() { return false; }  // disable help on F1
  } else {  // Mozilla
    document.onkeypress = getkey;
  }
</script>


Iemand een idee wat er mis is met de code? Volgens mij klopt het, maar het effect is niet goed, dus er zal wel iets missen?

Google en hier al gezocht, maar of ik kan niet zoeken, of niemand heeft hetzelfde probleem.

[ Voor 4% gewijzigd door Verwijderd op 14-03-2006 10:54 ]


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

ik heb helaas geen oplossing voor je probleem, maar ik ben ook zeker geen voorstander van je implementatie. Ik vind niet dat je met de standaard functionaliteit moet gaan kloten.
Het druist tegen de verwachting van de gebruiker in, en je loopt tegen problemen aan zoals nu.....

  • WormLord
  • Registratie: September 2003
  • Laatst online: 01-12-2025

WormLord

Devver

Door onderstaande regel toe te voegen aan je script en even wat te testen, moet het toch al vrij snel duidelijk worden wat er aan de hand is.
code:
1
alert('which: ' + e.which + "\nkeycode: " + e.keyCode + "\nkey: " + key);

Blijkbaar is de code voor 'p' in IE anders dan in FF.

Maar net als CaptBiele ben ik geen voorstander van dit soort zaken.

Verwijderd

Topicstarter
Ah geweldig :)

Nu is het simpel de e.wich negeren, aangezien die toch geen relevante waardes geeft waar ik iets aan heb

code:
1
var key = e.which || e.keyCode;


wordt dus
code:
1
var key = e.keyCode;


En nu werkt het.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12-02 13:44
Ik heb ook weleens zoiets gebruikt (IE only) voor een webapplicatie en in zekere zin is het wel logischer. Ik zag daarna overigens ook een stijging van het F1 gebruik in applicaties als Word wat het aantal simpele helpdesk vragen sterk verminderde. Het voldoet ook in de logica van de gebruiker: "Als ik op F1 druk krijg ik hulp bij hetgeen waar ik mee bezig ben." Dat is niet het geval als ze dan de IE hulp krijgen.

Verwijderd

Topicstarter
djluc schreef op dinsdag 14 maart 2006 @ 13:53:
Ik heb ook weleens zoiets gebruikt (IE only) voor een webapplicatie en in zekere zin is het wel logischer. Ik zag daarna overigens ook een stijging van het F1 gebruik in applicaties als Word wat het aantal simpele helpdesk vragen sterk verminderde. Het voldoet ook in de logica van de gebruiker: "Als ik op F1 druk krijg ik hulp bij hetgeen waar ik mee bezig ben." Dat is niet het geval als ze dan de IE hulp krijgen.
Amen!

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

djluc schreef op dinsdag 14 maart 2006 @ 13:53:
Ik heb ook weleens zoiets gebruikt (IE only) voor een webapplicatie en in zekere zin is het wel logischer. Ik zag daarna overigens ook een stijging van het F1 gebruik in applicaties als Word wat het aantal simpele helpdesk vragen sterk verminderde. Het voldoet ook in de logica van de gebruiker: "Als ik op F1 druk krijg ik hulp bij hetgeen waar ik mee bezig ben." Dat is niet het geval als ze dan de IE hulp krijgen.
Dat kun je dus ook omdraaien. Stel je hebt die webapplicatie open, en je wilt WEL iets weten over je browser. Dan druk je op F1, en krijg je ineens de help van die betreffende app.
En dat verwacht een gebruiker niet... Nu zal dat in dit geval niet zo heel schokkend zijn, maar over het algemeen moet je van de standaard functionaliteit afblijven.

  • Harm
  • Registratie: Mei 2002
  • Niet online
CaptBiele schreef op dinsdag 14 maart 2006 @ 17:22:
Nu zal dat in dit geval niet zo heel schokkend zijn, maar over het algemeen moet je van de standaard functionaliteit afblijven.
Het hangt er vanaf waarvoor deze website ontwikkeld wordt. Als het ontwikkeld wordt als webapplicatie die al dan niet via een intranet beschikbaar wordt gesteld, kan het heel goed zijn om de Help van de applicatie onder F1 te zetten. Het is dan namelijk een stukje software die bedoeld is voor het bedrijfsproces. Als een willekeurige site dat gaat doen, die dus voor iedereen toegankelijk is, dan moet men van de standaard functionaliteit van de browser afblijven. Voor specifieke apps is het mijns inziens dus wel 'toegestaan' te rommelen met deze toetsen.

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Harm schreef op dinsdag 14 maart 2006 @ 19:19:
Het hangt er vanaf waarvoor deze website ontwikkeld wordt. Als het ontwikkeld wordt als webapplicatie die al dan niet via een intranet beschikbaar wordt gesteld, kan het heel goed zijn om de Help van de applicatie onder F1 te zetten. Het is dan namelijk een stukje software die bedoeld is voor het bedrijfsproces. Als een willekeurige site dat gaat doen, die dus voor iedereen toegankelijk is, dan moet men van de standaard functionaliteit van de browser afblijven. Voor specifieke apps is het mijns inziens dus wel 'toegestaan' te rommelen met deze toetsen.
Yep, i agree. 8)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12-02 13:44
Zoals ik ook geschreven heb inderdaad voor een webapplicatie op het netwerk. Als je aan het surfen bent is het uiteraard fout omdat je dan hulp nodig hebt bij het surfen en je dus de IE hulp nodig hebt.

Verwijderd

Sorry voor deze schop.

In IE is het volgende al voldoende:

<body onHelp="popupWindow('url'); return false;">

Voor FF dus niet.

Bij dezen dan ook heel erg bedankt voor de oplossing Nathan!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Het is misschien een offtopic vraag, maar aan de andere kant heeft het enigsinds wel met je probleem te maken.

Stel nou, dat iemand (om wat voor reden(en) dan ook) JS heeft gedisabled, hoe wil je zo'n iemand dan jouw help pagina's laten zien? :? Dat zal je dan dus met een URL moeten doen en dan maakt het voor iemand met JS enabled niet uit, want die klikt dan ook gewoon op die link... :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:00

crisp

Devver

Pixelated

onkeypress is gewoon te cancellen in Firefox.
In IE moet je inderdaad onhelp afvangen en cancellen voor F1, voor andere functionkeys kan je in IE de onkeydown cancellen.

Intentionally left blank


Verwijderd

@GJ

Ik zou niet weten waar ik die link moest plaatsen (telkens een bericht, messagestack in osC, van klik hier voor hulp staat niet netjes. Noscripters krijgen deze misschien nog (<noscrip></noscript>, remember :P), maar ik overweeg nog om mensen die JS uit hebben geen hulp te bieden ^^.

F1 sluit de help popup ook, kan het nog handiger? Bovendien zit er een mailscriptje achter de popup, zodat men mij wat terugvoeder kan geven over de geschreven tekst.

@crisp

onkeypress in FF te cancelen? Ik begrijp dit niet helemaal (ben niet zo'n JS-man, nog niet ;))
Pagina: 1