2010-07-23 21 views
5

Está ejecutándose algo como:¿Qué tan seguro es usar document.body.innerHTML.replace?

document.body.innerHTML = document.body.innerHTML.replace ('valor antiguo', 'nuevo valor')

peligroso?

Me preocupa que tal vez algunos navegadores pueden arruinar toda la página, y dado que este es el código JS que se colocará en sitios fuera de mi control, ¿quién podría ser visitado por quién sabe qué navegadores? Soy un poco preocupado.

Mi objetivo es solo buscar una aparición de una cadena en todo el cuerpo y reemplazarla.

+0

No soy 100% positivo, pero ¿no eliminaría esto también los controladores de eventos vinculados a los elementos HTML del cuerpo? Quiero decir, podría ser lo suficientemente inteligente como para no volver a analizar todo el cuerpo de nuevo, pero ¿y si el cuerpo tiene una etiqueta '

3

Estoy de acuerdo con lucideer, debe encontrar el nodo que contiene el texto que está buscando, y luego hacer un reemplazo. Los marcos de JS lo hacen muy fácil. jQuery por ejemplo, tiene la poderosa : contiene ('su texto') selector de

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

0

Si desea oscilar solución sólida, que debe iterar sobre DOM y encontrar el valor para reemplazar esa manera.

Sin embargo,, si el 'valor anterior' es una cadena larga que nunca podría mezclarse con la etiqueta, el atributo o el valor de atributo, está relativamente seguro con solo reemplazar.

+0

Iterar todo el DOM es extremadamente ineficiente. – lucideer

+1

No es * que * ineficiente. No todo el código se ejecuta dentro de bucles anidados y temporizadores de 10 ms. – MooGoo

Cuestiones relacionadas