Safari, focus op textbox na tab

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21-09 15:23
Ik ben momenteel bezig om ubiquity na te maken voor safari icm Greasekit (een GreaseMonkey port voor Safari).

Dit werkt op zich vrij goed (zie screenshot).

Afbeeldingslocatie: http://localhostr.com/files/89db4f/Picture+3.png

Via alt-spatie komt dit venster tevoorschijn, door de key combinatie te binden dmv een jQuery plugin. (http://code.google.com/p/js-hotkeys/). Dit werkt helemaal prima.

Ik maak veel gebruik van jQuery (welke ik dynamisch met javsacript inlaad), dit levert geen problemen op.
Momenteel ben ik zo ver dat hij als ik in het invulvak dingen invul hij in de lijst eronder de 5 'meest lijkende' functies plaatst.

Op het moment dat er op tab wordt gedrukt vult hij het invulvakje aan met het eerste resultaat uit het lijstje. Dit werkt prima. Ik heb dit gedaan door ook de tab knop te binden aan een eigen functie welke kijkt wat de dichtsbijzijnde waarde is, en deze plaatst in het textvak.

Ongeveer deze code:

code:
1
2
3
4
5
6
7
8
9
//Hierboven wordt jQuery geladen, 'spotty' in de body geinjecteerd.

//Tab key binden aan een eigen actie
$("#spotty").bind('keydown', 'tab', appendAction);

function appendAction() {
    $('#spotty .search').val($('#spotty .chosen').text()); //De .search is de searchbox, en de .chosen de bovenste uit de lijst
    $('#spotty .search').focus();
}


Helaas, dit werkt niet, dit waarschijnlijk omdat je juist door het tabben de focus verliest (dat is immers het idee van de tab knop).

Het veld wordt dus wel aangevult (dus mijn functie appendAction wordt wel aangeroepen) maar het object krijgt niet de focus. (Als in, er verschijnt geen typcursor in).

Nu dacht ik, laat ik het zo oplossen.

code:
1
2
3
4
5
6
7
8
9
function appendAction() {
    $('#spotty .search').val($('#spotty .chosen').text());
    
    setTimeout(function() {
        $('#spotty .search').focus();
        actionList($('#spotty .search').val());
    }, 20);
    
}


Iets wat al meer werkt, de cursor komt namelijk nu wel netjes in het invulvakje te staan, maar ik kan typen wat ik wil, er gebeurt niets, totdat ik het invulvakje weer aanklik. Ook als ik de setTimeout waarde naar bijvoorbeeld een seconde verhoog, werkt dit niet.

Ook heb ik geprobeert de keydown te vervangen door een keyup, maar dit baat ook niets, er gebeurt dan namelijk helemaal niets.

Tweakers Time Machine Browser Extension | Chrome : Firefox