Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Settare attributi che non esistono in IE

    Lo so, il titolo sembra uscito da un film di fantascienza, comunque...
    Se io setto un attributo nuovo di zecca, tipo
    codice:
    obj.setAttribute("ciao", "hello");
    Rischio di incorrere in problemi o tutti i browser permettono di farlo? ( Io ho fatto dei test con quelli più importanti tranne che IE7 e non hanno dato problemi. )

  2. #2
    Me lo chiedo anch'io

    da una prova veloce si IE7 mi pare funzioni anche li'.

    Ma si sa che spesso non basta, perche' se non e' nelle specifiche il comportamento potrebbe cambiare da un giorno all'altro.

    Nelle specifiche del DOM del w3c comunque ho trovato questa frase

    setAttribute
    Adds a new attribute. If an attribute with that name is already present in the element , its value is changed to be that of the value parameter.
    Lascierebbe supporre che e' lecito creare nuovi attributi

  3. #3
    Grazie per la risposta.
    In effetti eviterei volentieri una cosa del genere semplicemente settando una proprietà:
    codice:
    obj.proprieta = valore;
    Il fatto è che io dopo devo necessariamente cancellare la proprietà, ma l'operatore delete in IE non funziona sugli oggetti HTML:
    codice:
    delete(obj.proprieta);
    Il motivo è che gli oggetti html in IE non solo non appartengono a una classe tipo HTMLElement, ma non appartengono nemmeno alla classe Object!
    Tanto per averne conferma basta assegnare un prototipo alla classe Object:
    codice:
    Object.prototype.prop = "aaa";
    window.onload = function() {
      alert(document.getElementById("wfdds").prop);
    }
    IE è l'unico browser dove l'alert da come valore undefined.

    Pertanto l'unica soluzione che ho trovato per fare qualcosa di simile al delete è appunto quella di settare un attributo e di rimuoverlo successivamente con removeAttribute.

    PS: Non è che mi passeresti quel link del w3c?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da raven74
    Lascierebbe supporre che e' lecito creare nuovi attributi
    ma che puo' anche intendersi come:
    aggiunge un nuovo attributo (o) se un attributo con quel nome e' gia' presente per quell' elemento (...ne cambia il valore)

    secondo me e' plausibile farlo in questa maniera,
    ma non andrebbe fatto perche' cosi' invalidi l' xhtml, che non permette attributi arbitrari

    chiaramente non parlo di validazione da parte del validatore, ma di dispositivi che in futuro potrebbero essere piu' fiscali e valutare anche le modifiche apportate all' xhtml via script

  5. #5
    Pienamente d'accordo, infatti se leggi sopra capisci il motivo per cui sono stato costretto a ricorrere a questa soluzione.
    Oltre a ciò ho notato che Firefox è già un pò più fiscale di IE e Opera.
    Infatti l'attributo creato ex novo non deve avere caratteri speciali ( questo mi pare logico, sicuramente tale aspetto deve essere menzionato anche nelle specifiche ).

  6. #6
    Si', l'obiezione di xinod e' piu' che valida. In un'ottica di documenti validati xhtml attributi arbitrari non sembrano una buona idea... (certo che in questo caso c'e' una certa ambiguita' da parte del w3c).

    Un'altra rischio che mi viene ora in mente e' quello di creare un attributo che potrebbe essere in futuro utilizzato per altri scopi

    Peccato pero' perche' come trucco poteva rivelarsi estremamente utile.

    @mega69 le specifiche del DOM le ho trovate a

    http://www.w3.org/DOM/DOMTR

  7. #7
    Invece nell'XML non ci dovrebbero essere problemi nel creare nuovi attr o sbaglio?
    Antonio Correnti
    www.resetstudio.it

  8. #8
    su questo argomento ci sto facendo marcire il mio cervello nel forum XHTML

    nonostante si parli di eXtendibleHMTL sta di fatto che è praticamente improponibile la cosa

    un'alternativa a manipolare il DTD (quello che sto cercando di fare sul forum XHMTL) è proprio quello di usare javascript. A parte il fatto che mi pare di ricordare che bisogna ricorrere alle solite soluzioni crossbrowser, mi sovviene in mente un altro problema

    siamo sicuri che FF non effettui la validazione "al volo" del documento? no perchè se poi abbiamo un documento XHTML non tali operazioni non saranno consentite?

    lo dico perchè quando implementai Ajax su pagine XHTML1.1 Firefox mi validava "al volo" il codice ed in qualche sito sparso per il web ricordo di aver fissato tra commenti qualche moccolo che "al volo" mi scappò
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se la modifica di cui stiamo parlando la apporti via javascript non puo' interessare ajax,
    semplicemente perche' non la esegue, semmai devi farla eseguire dopo aver ricevuto la risposta, come tutti gli script coinvolti nella risposta asincrona

    ho appena provato con un contenuto dinamico caricato via ajax (xhtml1.1 entrambi i documenti):
    se nel markup mi invento un attributo a firefox (allo stato attuale delle cose) non importa
    se pero' per es. nel markup non annido i tag correttamente ho errori

  10. #10
    Originariamente inviato da Jarno
    siamo sicuri che FF non effettui la validazione "al volo" del documento? no perchè se poi abbiamo un documento XHTML non tali operazioni non saranno consentite?

    Originariamente inviato da Xinod
    ho appena provato con un contenuto dinamico caricato via ajax (xhtml1.1 entrambi i documenti):
    se nel markup mi invento un attributo a firefox (allo stato attuale delle cose) non importa
    se pero' per es. nel markup non annido i tag correttamente ho errori
    In effetti pure a me è capitato certe volte che Firefox correggesse gli errori.
    Se ad esempio mettevo un tag div dentro un tag p ( errore visto che il tag p non può contenere elementi blocco ), se cercavo in qualche modo di manipolare il tag div all'interno, Firefox chiudeva automaticamente il tag p in modo che non contenesse il tag div. Me ne sono accorto semplicemente controllando il codice generato tramite l'estensione web developer.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.