Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    trasformare span con attributi in singoli tag

    buongiorno Signori,
    Ho un editor HTML che formatta le paroel e fin qui tutto ok ma quando ad una parola passo piu parametri es, la coloro, gli do il bod e un font family, mi genera il seguente codice:
    <span style="font-weight: bold; color: rgb(255, 0, 0); font-family: impact,chicago;">frase</span>, tutto questo usando la funzione execCommand.
    Vorrei sapere se e' possibile e come fare a trasformare questo unico tag in piu tag singoli, quindi bold, font color, ecc....
    Si puo' passare hai parametri la forzatura per non unire tutto in un unico tag, oppure se non si puo fare, come devo affrontare il problema?
    espressioni regolari? ma come visto che non so neanche quali attributi coinvolti e in quale sequenza?
    altri consigli?
    grazie
    http://www.perungiorno.it

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    con l' execCommand e' il browser a decidere come scrivere la formattazione:
    Firefox formatta in quel modo, IE scriverebbe i tag singoli

    non ci sono impostazioni particolari che ti permettano di forzare una sintassi invece di un' altra, l' unica e' procedere di regexp (e + che ad ogni inserimento, soltanto prima di inviare)

    ciao

  3. #3
    prima domanda
    per formattare in maniera visiva un testo con bold italic ecc, c'e' solo il comando execCommand ho esistono delle alternative? magari comandi similari che posso forzare con dei parametri passati alla funzione?
    seconda domanda
    procedo con le espressioni regolari visto che le conosco in maniera non cosi massiccia come richiede questo caso, come posso scrivere una espressione per intercettare questi attributi dentro il tag span? es, quello postato prima:
    <span style="font-weight: bold; font-style: italic; text-decoration: underline line-through;
    font-family: impact,chicago; color: rgb(204, 0, 0);">aaaaaaa</span> non sapendo quanti di questi siano presenti e in che ordine?
    grazie
    http://www.perungiorno.it

  4. #4
    risolto e credo anche sia una buona soluzione:
    source = source.replace(/<span(.*?)font-weight: bold;(.*?)>(.*?)<\/span>/gi,"<span$1$2>$3</span>");
    source = source.replace(/<span(.*?)font-style: italic;(.*?)>(.*?)<\/span>/gi,"<span$1$2>$3</span>");
    source = source.replace(/<span(.*?)text-decoration: underline;(.*?)>(.*?)<\/span>/gi,"<span$1$2>$3</span>");
    source = source.replace(/<span(.*?)text-decoration: line-through;(.*?)>(.*?)<\/span>/gi,"<span$1$2>[s]$3[/s]</span>");
    source = source.replace(/<span(.*?)text-decoration: underline line-through;(.*?)>(.*?)<\/span>/gi,"<span$1$2>[s]$3[/s]</span>");
    source = source.replace(/<span(.*?)font-family: (.*?);(.*?)>(.*?)<\/span>/gi,"<span$1$3>[family=$2]$4[/family]</span>");

    source = source.replace(/<span(.*?)>(.*?)<\/span>/gi,"$2");

    semplicemente se trovo dentro il tag span una determinata parola tipo bold, tolgo la parola bold e metto all'interno del tag span e fuori il testo il tag corrispettivo, per tutti i tag che mi interessano, alla fine restera il tag span senza attributi e lo sostituisco co niente

    I colori li ho trattato a parte perche dovevo cambiare il valore da decimale a esadecimale
    Ciao e grazie a tutti per l'interessamento
    http://www.perungiorno.it

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.