【发布时间】:2012-11-12 21:24:45
【问题描述】:
我正在尝试编写一个不使用 jQuery 的 JavaScript 程序来替换网页上所有可见的目标文本,而不会破坏页面的功能。
具体来说,我正在尝试制作一个 Chrome 扩展程序,它可以在 Facebook 等网站上被动执行。
我在以下方面取得了有限的成功:
checkLoad();
function checkLoad(){
if (document.readyState === "complete") {
document.body.innerHTML = document.body.innerHTML.replace("target string", "replacement string");
} else {
setTimeout('checkLoad();', 500)
}
}
此代码遗漏了人名、头衔等内容。
我环顾四周,似乎找不到可行的解决方案。有什么想法吗?
【问题讨论】:
-
你能举个例子说明它遗漏了什么吗?例如,如果它是通过 AJAX 加载的,是的,除非您不断检查,否则您可能会错过它。
-
出于多种原因,我不推荐使用
innerHTML;一方面,您将冒险修改 HTML 标记和属性的内容。 -
Javascript 函数 .replace 将正则表达式作为第一个参数。尝试用它的等效正则表达式版本替换第一个参数(即转义所有正则表达式特殊字符等)
-
重写
innerHTML是一种糟糕的方法。在这里阅读:stackoverflow.com/q/7392930/425275 -
它错过了一些事情,比如如果我输入一个人的名字,他们所有帖子旁边的名字都不会改变,而他们在 cmets 或帖子内容中的名字会改变。
标签: javascript replace