Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2013, 15:33   #1
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
[Javascript][Greasemonkey]Scroll ad elemento successivo tramite classe

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:
Codice:
// ==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?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2013, 10:02   #2
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Ok, lo script è perfetto, l'unico problema stava che nel creare i nuovi ID ho usato uno spazio tra Pers e il numero, di conseguenza questo creava un errore con scrollTo.
( A pensarci bene, visto che credo sta notazione sia ripresa da CSS, in CSS una scrittura così, un ID 'spaziato' non ha minimamente senso... )
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2013, 17:33   #3
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Per non aprire un altro topic: come faccio ad aprire un link in una nuova scheda in secondo piano?
Ho solo trovato come aprire una scheda in primo piano...
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2013, 08:25   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Dopo una breve ricerca nella sezione "Search Scripts" del sito di Greasemonkey usando la funzione "Custom script search with Google" ho trovato questo:
http://userscripts.org/topics/61576

Posto anche questo link:
https://duckduckgo.com/?q=Greasemonk...background+tab
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 18-01-2013 alle 08:38.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2013, 10:06   #5
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Dopo una breve ricerca nella sezione "Search Scripts" del sito di Greasemonkey usando la funzione "Custom script search with Google" ho trovato questo:
http://userscripts.org/topics/61576
Come specificato nel secondo post della discussione di questo script, l'ideatore dice che non è possibile ottenere questo comportamento.

È una risposta che ho trovato anche io in giro, tuttavia penso che si possa fare, con qualche...trucco.

Ad esempio, non sono un drago di JS ne jQuery, ma vedendo le funzioni presenti in jQuery sono convinto si possa fare quello che ora dirò a breve. Qualcuno con un po' di dimestichezza saprebbe come fare per:
  1. Far aprire il link in una nuova scheda in primo piano e poi far uno switch indietro alla scheda precedente ( che ha aperto il link )
  2. Simulare il click centrale o il ctrl+click alla pressione di un tasto.

La seconda opzione sarebbe,a mio avviso, la più fine in termini di raggiungimento dell'obiettivo.
La prima è un po' da "Il fine giustifica i mezzi".
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Purtroppo la soluzione più ricorrente che ho trovato è stata proprio questa ( quella che si trova nel primo link ), ovvero modificare le preferenze di FF così che tutti i link ti si aprano in secondo piano. Non è quello che cerco purtroppo, perchè voglio che solo quei link ( da me specificati ) si aprano in secondo piano.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2013, 11:49   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ho dato un occhiata in giro, e ho scoperto un add-on che potrebbe fare al caso tuo: Scriptish.
link add-on per Firefox
homepage di Scriptish

Pare sia una sorta di fork/estensione di Greasemonkey.
Quel che ti può interessare è che nella lista delle modifiche introdotte con la versione 0.1.2 [version history] ho trovato questo:
Quote:
Added support for loading tabs in the background with GM_openInTab
La versione più recente è la 0.1.8

Andando a spulciare la "documentazione" circa la chiamata a GM_openInTab di Greasemonkey migliorata da Scriptish salta fuori questo:
https://github.com/scriptish/scripti...i/GM_openInTab
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 18-01-2013 alle 11:58.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2013, 15:11   #7
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ho dato un occhiata in giro, e ho scoperto un add-on che potrebbe fare al caso tuo: Scriptish.
link add-on per Firefox
homepage di Scriptish

Pare sia una sorta di fork/estensione di Greasemonkey.
Quel che ti può interessare è che nella lista delle modifiche introdotte con la versione 0.1.2 [version history] ho trovato questo:

La versione più recente è la 0.1.8

Andando a spulciare la "documentazione" circa la chiamata a GM_openInTab di Greasemonkey migliorata da Scriptish salta fuori questo:
https://github.com/scriptish/scripti...i/GM_openInTab
Ok. Questo potrebbe essere molto interessante.
Ne avevo sentito parlare di scriptish, ma pensavo fosse solo un esercizio di stile per quale programmatore poco grato allo sviluppatore di greasemonkey.
Controllo appena ho un attimo di tempo!
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 12:08   #8
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Ottimo! Ho provato e sono riuscito nel mio intento.
Ora però sto provando un po' le funzioni jquery $.get() e $.ajax().
Ho serie difficoltà a capirne il funzionamento.

Quello che voglio fare io è: dato un link ( nello stesso dominio da cui faccio partire la richiesta ) voglio che mi ritorni l'elemento con una determinata ( e ciò che contiene ).
Ho provato molte cose, tipo:
Codice:
$.get('http://esempio.it/pagina1.php', function(data){
    alert($(data).find('.classe1'));
});
Oppure:
Codice:
$.get('http://esempio.it/pagina1.php', function(html){
    var $result=$(html);
    alert($($result).find('.classe1'));
});
Oppure:
Codice:
$.get('http://esempio.it/pagina1.php', function(html){
    var $result=html;
    alert($($result).find('.classe1'));
});
Insomma, potrei star qui a scrivere i milioni di esempi che ho provato ma senza successo.
Nessuno di questi funziona.

L'unica cosa che funziona ( che non mi serve a niente però ):
Codice:
$.get('http://esempio.it/pagina1.php', function(html){
    alert(html);
});
Mi ritorna l'intera pagina che ho dato in input.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 13:12   #9
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2791
Codice:
$.get('http://esempio.it/pagina1.php', function(html){
    var $result=$(html);
    alert($result.find('.classe1').html());
});
Prova così. $result.find('.classe1') è un oggetto, quindi con alert probabilmente stampa qualcosa tipo [Object] o una cosa del genere
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2013, 13:50   #10
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Codice:
$.get('http://esempio.it/pagina1.php', function(html){
    var $result=$(html);
    alert($result.find('.classe1').html());
});
Prova così. $result.find('.classe1') è un oggetto, quindi con alert probabilmente stampa qualcosa tipo [Object] o una cosa del genere
Niente.
Non succede nulla e dalla console degli errori mi dice:
Codice:
Error: Syntax Error, unrecognised expression: html di esempio.it/pagina.php
Inoltre l'errore si verifica su jquery.min.js, quindi potrebbe essere sbagliato proprio il comando visto che da errore dentro la librearia di jquery..
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
Recensione nubia Neo 5 GT: la scommessa ...
ÆTHER: nasce il consorzio europeo ...
Così l'AI nasconde sé stessa: nasce Acad...
L'europea Mistral AI sfida tutti: il rob...
La 'casetta in Canadà' di Mark Zu...
Una batteria che dura più di 5000...
Addio smemorati: WhatsApp testa una nuov...
Italia finalmente all'avanguardia con il...
Gratis e scritto con l'IA, il convertito...
Cooler Master V8 ACE 3DHP: disponibile i...
L'IA minaccia migliaia di posti nei call...
Assetto Corsa EVO introduce il foveated ...
Il modello base di NVIDIA Shield TV potr...
Meta sta sviluppando occhiali smart capa...
Ecco degli avviatori batteria auto super...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v