cambio di alcuni valori dei css

4 views
Skip to first unread message

armando

unread,
Dec 2, 2009, 11:54:13 AM12/2/09
to XUL Italia - Public Discussions
ciao a tutti,
in poche parole la mia estensione, parlando ad alto livello, dovrebbe
fare questo:
nella barra istallata in mozilla ci sono vari pulsanti ognuno dei
quali corrispondono a vari profili e per ognuno dei quali ho mem dei
parametri attraverso i quali un utente definisce come vuole vedere la
pagina del sito web....
quindi andrà a specificare
_____
colore sfondo
colore testo e link
dim immagini
tipo font
_____
dim testo
spazio tra caratteri
interlinea
incremento
_______

Gli ho divisi in due blocchi per il fatto che, per il primo blocco
creo dinamicamente un css (per le imm è un altro discorso) e lo
inietto alla pagina...sostanzialmente così ho ottenuto quello che
volevo in quanto la pagina rimane la stessa mentre cambiano solo qeui
parametri;

per il secondo blocco il discorso è molto più complicato: il parametro
incremento sta ad indicare di quanto deve differenziarsi, in
dimensioni, il testo (sarebbe il testo con la grandezza minore nella
pagina) dai vari titoli....di conseguenza il paramentro dim testo
indica la dimensione del testo (più piccolo) e partendo da questo,
calcolarsi la dim dei vari titoli i quali devono conservare
proporzionalmente le loro dim....che casino!!!

Ora, la funzione che ho creato, praticamente, scorre ricorsivamente i
nodi della pagina e per ognuno di essi toglie gli attributi class,
style..per poi risettare le varie dim interlnea e spazio caratteri

il problema sta nel fatto che quando entrano in gioco i parametri di
questo blocco, chiaramente, la pagina priva delle proprie impostazioni
crolla non mantenendo per niente le impostazioni originali

quello sto cercando di capire è se, secondo voi, riesco
chirurgicamente, a cambiare solo i paramentri che mi interessano senza
andare a togliere tutti gli attributi? (sopratutto in modo da coprire
un numero di siti abbastanza vasto)

Luca Greco

unread,
Dec 2, 2009, 8:19:33 PM12/2/09
to xulit-...@googlegroups.com
2009/12/2 armando <armando....@gmail.com>:
> Ora, la funzione che ho creato, praticamente, scorre ricorsivamente i
> nodi della pagina e per ognuno di essi toglie gli attributi class,
> style..per poi risettare le varie dim interlnea e spazio caratteri
> il problema sta nel fatto che quando entrano in gioco i parametri di
> questo blocco, chiaramente, la pagina priva delle proprie impostazioni
> crolla non mantenendo per niente le impostazioni originali

> quello sto cercando di capire è se, secondo voi, riesco
> chirurgicamente, a cambiare solo i paramentri che mi interessano senza
> andare a togliere tutti gli attributi? (sopratutto in modo da coprire
> un numero di siti abbastanza vasto)

Credo che tu possa evitare di modificare (o peggio ancora
togliere) gli attributi class e style.

Tieni conto che le regole CSS seguono uno priorita

(DOMElement.style) < attributo style < CSS (nell'ordine di specificità)

Quindi se modifichi i valori accedendo all'attributo
"style" dell'oggetto DOM hai il minimo impatto possibile,
qualcosa del tipo:

for each(let el in element_list) {
el.style["attributo css"] = nuovo_valore;
}

--
rpl

armando

unread,
Dec 3, 2009, 11:00:35 AM12/3/09
to XUL Italia - Public Discussions
quindi mi conviene scorrere in tutta la pagina e per i nodi che mi
interessano impostare ad esempio
node.style.fontSize = ...
così facendo le impostazioni della pagina rimangono.

grazie mille luca

armando

unread,
Dec 8, 2009, 11:41:18 AM12/8/09
to XUL Italia - Public Discussions
ciao a tutti, sto alle prese con l'implementazione della funzione che
scorre fra i vari DOM della pagina....e mi trovo di fronte ad un
problema che non riesco a risolvere...
il pezzo di codice della funz è:
.................
else if(node.tagName=="A")
{
node.style.color = "green";
node.setAttribute("overflow","visible");
}
else if(node.tagName=="INPUT")
{
node.removeAttribute("size");
node.style.color = "pink";

}else node.style.color = "pink";
.........................
nel quale non sto riuscendo ad impostare il colore dei link in base al
fatto se essi siano stati visitati o no!
In particolare dal codice io imposto tutto cio non specificato dai
vari casi a pink mantre per "A" non riesco a differenziare i due
casi...
qualcuno mi può dare una mano??

Luca Greco

unread,
Dec 8, 2009, 1:33:19 PM12/8/09
to xulit-...@googlegroups.com
2009/12/8 armando <armando....@gmail.com>:
> nel quale non sto riuscendo ad impostare il colore dei link in base al
> fatto se essi siano stati visitati o no!
> In particolare dal codice io imposto tutto cio non specificato dai
> vari casi a pink mantre per "A" non riesco a differenziare i due
> casi...
> qualcuno mi può dare una mano??

Come sempre succede... superato un problema se ne presenta un'altro :-)

Purtroppo dall'attributo style si possono cambiare gli attributi dell'elemento,
ma le "pseudo-classi" trascendono il singolo elemento e anche il tag, in quanto
solo legate al particolare stato dell'elemento (:visited ed :hover ad esempio).
[https://developer.mozilla.org/en/CSS_Reference#Pseudo-classes]

L'unica soluzione che mi viene in mente in questo momento è quella di
aggiungere un tag per uno stylesheet personalizzato di tali pseudo-classi,
in coda a tutti gli altri stylesheet eventualmente presenti (in modo
che le regole
CSS vengano ridefinite da stylesheet successivi) con qualcosa tipo:

a:visited {
...
}

Just my 2 cents,
rpl

rpl

unread,
Jan 15, 2010, 7:57:11 AM1/15/10
to XUL Italia - Public Discussions
Volevo segnalare che esiste un altro metodo per modificare lo
stylesheet di un documento
in maniera programmatica da javascript, identificato da un mio collega
(Domenico Martella,
il quale verrà iscritto forzatamente a questa ml :-DDDDD)
al lavoro per risolvere un problema simile a quelli esposti in questo
thread:

L'attributo 'styleSheets' dell'oggetto 'document' ;-)

Segue un link in cui la tecnica viene discussa con maggior dettaglio:
http://www.quirksmode.org/dom/changess.html

Happy xul-ing,
rpl

Reply all
Reply to author
Forward
0 new messages