2010-07-23 19 views
5

è in esecuzione qualcosa come:Quanto è sicuro utilizzare document.body.innerHTML.replace?

document.body.innerHTML = document.body.innerHTML.replace ('vecchio valore', 'nuovo valore')

pericoloso?

Sono preoccupato che forse alcuni browser potrebbero rovinare l'intera pagina, e poiché questo è il codice JS che verrà inserito su siti fuori dal mio controllo, chi potrebbe essere visitato da chissà quali browser sono un po ' preoccupato.

Il mio obiettivo è solo cercare un'occorrenza di una stringa in tutto il corpo e sostituirla.

+0

Non sono al 100% positivo, ma non rimuoverà anche alcun gestore di eventi associato agli elementi HTML nel corpo? Voglio dire, potrebbe essere abbastanza intelligente da non ripetere di nuovo l'intero corpo, ma cosa succede se il corpo ha un tag '

3

Sono d'accordo con lucideer, dovresti trovare il nodo che contiene il testo che stai cercando, e poi fare una sostituzione. I framework JS rendono questo molto facile. jQuery per esempio ha il potente : contiene ('il testo') selettore

http://api.jquery.com/contains-selector/

0

Se volete roccia soluzione solida, si dovrebbe iterare DOM e trovare il valore per sostituire in quel modo.

Tuttavia, se "valore precedente" è una stringa lunga che non può mai essere confusa con tag, attributo o valore attbibute si è relativamente sicuri semplicemente facendo la sostituzione.

+0

L'iterazione su tutto il DOM è estremamente inefficiente. – lucideer

+1

Non è * che * inefficiente. Non tutto il codice viene eseguito all'interno di cicli nidificati e timer di 10 ms. – MooGoo

Problemi correlati