kwb
16-01-2013, 15:33
Ok, non so se vale scrivere qua se si hanno dubbi con JS per greasemonkey, nel caso, qualche mod sposti nella sezione corretta.
Premetto che non conosco jQuery e conosco poco JS ( conosco, perchè ho fatto C, Java e altri linguaggi che hanno sintassi simile ).
Detto ciò,
Sto cercando di farmi uno script dove premendo un tasto ( della tastiera, nel mio caso J ) mi porti al successivo elemento della pagina che viene identificato secondo un ID.
Ora siccome i div tra cui mi voglio spostare sono univocamente identificati tramite una classe, e ho visto che farlo con JS puro è piuttosto complesso ( vista l'assenza di un getElementByClass ), ho deciso di usare anche jQuery.
Con jQuery, vista la poca dimestichezza, ho optato per identificare tutti i div con una certa classe, per poi aggiugere ad ognuno di loro un id univoco ( una stringa + un numero sequenziale ).
In seguito speravo, tramite il plugin di jQuery scrollTo, di passare da un elemento all'altro facilmente:
// ==UserScript==
// @name ScrollPrevNext
// @namespace ScrollPrevNext
// @include miosito.php
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require http://flesler-plugins.googlecode.com/files/jquery.scrollTo-1.4.3.1-min.js
// @version 1
// ==/UserScript==
$(document).ready(function() {
nElem= $('.cl1').length;
var i = 0;
var j = 0;
var name=null;
$('div.cl1').attr('id', function(i){
i++;
return 'Pers '+i;
});
$('body').keydown(function(e) {
if(e.keyCode == 74 )
if ( j < nElem ) //Go fwd
{
j++;
name = '#Pers ' + j;
$('body').scrollTo(name);
}
if(e.keyCode == 75 ) //Go bwd
if( j > 0 )
{
j--;
$('body').scrollTo('#Pers ' +j);
}
});
});
Bene, non funziona lo scroll.
Riesco ad aggiungere il nuovo ID ad ogni elemento, ma non c'è modo di passare da uno all'altro. È come se non riconoscesse la funzione scrollTo .
Ammetto che non ho idea se un plugin di jQuery si richiami così oppure no, fatto sta che dal punto di vista sintattico è tutto perfetto.
Ho controllato e dentro gli if ci arriva, ma il comando non viene eseguito.
Chiudo dicendo che ho testato questo script anche in una pagina di prova html da me creata, aggiungendo opportunamente le librerie jquery ( quindi usando <script src".."></script> invece di @require ) e non funziona nemmeno li...
Cosa mi sfugge? :what:
Premetto che non conosco jQuery e conosco poco JS ( conosco, perchè ho fatto C, Java e altri linguaggi che hanno sintassi simile ).
Detto ciò,
Sto cercando di farmi uno script dove premendo un tasto ( della tastiera, nel mio caso J ) mi porti al successivo elemento della pagina che viene identificato secondo un ID.
Ora siccome i div tra cui mi voglio spostare sono univocamente identificati tramite una classe, e ho visto che farlo con JS puro è piuttosto complesso ( vista l'assenza di un getElementByClass ), ho deciso di usare anche jQuery.
Con jQuery, vista la poca dimestichezza, ho optato per identificare tutti i div con una certa classe, per poi aggiugere ad ognuno di loro un id univoco ( una stringa + un numero sequenziale ).
In seguito speravo, tramite il plugin di jQuery scrollTo, di passare da un elemento all'altro facilmente:
// ==UserScript==
// @name ScrollPrevNext
// @namespace ScrollPrevNext
// @include miosito.php
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require http://flesler-plugins.googlecode.com/files/jquery.scrollTo-1.4.3.1-min.js
// @version 1
// ==/UserScript==
$(document).ready(function() {
nElem= $('.cl1').length;
var i = 0;
var j = 0;
var name=null;
$('div.cl1').attr('id', function(i){
i++;
return 'Pers '+i;
});
$('body').keydown(function(e) {
if(e.keyCode == 74 )
if ( j < nElem ) //Go fwd
{
j++;
name = '#Pers ' + j;
$('body').scrollTo(name);
}
if(e.keyCode == 75 ) //Go bwd
if( j > 0 )
{
j--;
$('body').scrollTo('#Pers ' +j);
}
});
});
Bene, non funziona lo scroll.
Riesco ad aggiungere il nuovo ID ad ogni elemento, ma non c'è modo di passare da uno all'altro. È come se non riconoscesse la funzione scrollTo .
Ammetto che non ho idea se un plugin di jQuery si richiami così oppure no, fatto sta che dal punto di vista sintattico è tutto perfetto.
Ho controllato e dentro gli if ci arriva, ma il comando non viene eseguito.
Chiudo dicendo che ho testato questo script anche in una pagina di prova html da me creata, aggiungendo opportunamente le librerie jquery ( quindi usando <script src".."></script> invece di @require ) e non funziona nemmeno li...
Cosa mi sfugge? :what: