Remplacement de Texte dans le HTML avec JavaScript
Je suis en train d'écrire un programme JavaScript sans l'utilisation de jQuery pour remplacer tous les cible visible de texte sur une page web, sans gâcher la page de la fonctionnalité.
Plus précisément je suis en train de faire une extension Chrome qui le fait de manière passive sur des sites tels que Facebook.
J'ai connu qu'un succès limité avec les éléments suivants:
checkLoad();
function checkLoad(){
if (document.readyState === "complete") {
document.body.innerHTML = document.body.innerHTML.replace("target string", "replacement string");
} else {
setTimeout('checkLoad();', 500)
}
}
Ce code manque des choses comme des noms de personnes, des titres et des.
J'ai regardé autour et n'arrive pas à trouver une solution qui fonctionne. Des idées?
Pouvez-vous donner un exemple de ce qu'il manque? Si c'est des trucs chargé via AJAX par exemple alors, oui, vous pourriez le manquer, sauf si vous gardez le contrôle en permanence.
Je ne recommande pas l'utilisation
La fonction Javascript .remplacez prend une regex comme premier argument. Essayez de remplacer le premier argument avec l'équivalent de la regex de la version de celui-ci (c'est à dire d'échapper à toute regex caractères spéciaux, etc.)
La ré-écriture
Il manque des choses comme si j'entre le nom d'une personne, le nom sera inchangé à côté de tous leurs postes, où, comme leur nom dans les commentaires ou poster des modifications de la teneur en fines.
Je ne recommande pas l'utilisation
innerHTML
pour un certain nombre de raisons; d'une part vous risque de modifier le contenu de balises et d'attributs HTML.La fonction Javascript .remplacez prend une regex comme premier argument. Essayez de remplacer le premier argument avec l'équivalent de la regex de la version de celui-ci (c'est à dire d'échapper à toute regex caractères spéciaux, etc.)
La ré-écriture
innerHTML
est un affreux approche. Lire ici: stackoverflow.com/q/7392930/425275Il manque des choses comme si j'entre le nom d'une personne, le nom sera inchangé à côté de tous leurs postes, où, comme leur nom dans les commentaires ou poster des modifications de la teneur en fines.
OriginalL'auteur Andrew | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
Expression régulière Simple pour résoudre le problème:
Un problème avec cette approche est qu'il se délie javascript, des gestionnaires d'événement de la DOM.
Un avertissement - ce qui semble recharger le document entier, provoquant les événements déclenchés à partir d'une extension chrome pour refire. Je n'ai pas trouvé une solution pour elle, que je viens de découvrir le problème. FYI pour une autre personne dans l'univers, ce qui affecte...
OriginalL'auteur Bruno Sousa
Je vous recommande de remplacer le innerHTML pour quelques raisons, à partir de ce blog (https://j11y.io/javascript/replacing-text-in-the-dom-solved/):
un attribut dans le code html ou autre code.
document et, dans mon cas, tiré mon extension chrome de nouveau. Cela a conduit
pour mon extension de rechargement encore et encore.
J'ai résolu ce problème en téléchargeant le fichier js du blog et l'a appelé comme ça:
Mon cas d'utilisation ci-dessus est renvoyé le texte à remplacer dans une balise span, il est donc légèrement différente de la vôtre. Cette fonction javascript a beaucoup de flexibilité.
OriginalL'auteur Joe B.