2010-07-23 7 views
5

Laufen etwas wie:Wie sicher ist die Verwendung von document.body.innerHTML.replace?

document.body.innerHTML = document.body.innerHTML.replace ('alter Wert', 'neuen Wert')

gefährlich?

Ich bin besorgt, dass vielleicht einige Browser die ganze Seite vermasseln könnten, und da dies JS-Code ist, der auf Seiten außerhalb meiner Kontrolle platziert wird, wer von wem weiß, welche Browser ich bin ein wenig besucht besorgt.

Mein Ziel ist nur nach einem Vorkommen einer Zeichenfolge im ganzen Körper suchen und ersetzen.

+0

Ich bin nicht 100% positiv, aber würde dies nicht auch alle Event-Handler entfernen, die an die HTML-Elemente im Body gebunden sind? Ich meine, es könnte schlau genug sein, den ganzen Körper nicht wieder zu analysieren, aber was ist, wenn der Körper ein "

3

ich mit lucideer zustimmen, Sie sollten den Knoten finden, der den gesuchten Text enthält, und dann eine Ersetzung vornehmen. JS-Frameworks machen dies sehr einfach. jQuery zum Beispiel hat die mächtige : enthält (‚Ihren Text‘) Selektor

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

0

Wenn Sie feste Lösung rocken wollen, sollten Sie über DOM laufen und finden Sie Wert auf diese Weise zu ersetzen.

Jedoch, wenn 'alter Wert' eine lange Zeichenfolge ist, die nie mit Tag, Attribut oder Wert für attbibute verwechselt werden konnte, sind Sie relativ sicher, indem Sie einfach ersetzen.

+0

Das Iterieren über das gesamte DOM ist äußerst ineffizient. – lucideer

+1

Es ist nicht * das * ineffizient. Nicht der gesamte Code wird in verschachtelten Schleifen und 10 ms-Timern ausgeführt. – MooGoo

Verwandte Themen