背景
基于今天的 XKCD,我创建了以下脚本:
javascript:var a=document.getElementsByTagName('body')[0].innerHTML;a=a.replace(/Program(\w\w+)*/gmi,'curse').replace(/language/gmi,'word');
如果您访问一个站点(例如http://en.wikipedia.org/wiki/Programming_language)并粘贴上面的代码(如果需要,重新添加javascript:
),这将对文档的内容执行正则表达式替换,同时保留大多数格式,创造一些有趣的阅读。
但是,网站的外观会受到影响;大概是因为我正在替换innerHTML
而不是仅仅替换innerText
(我猜;虽然不确定)。
我不能简单地替换innerText,因为所有元素都包含他们自己的孩子的innerText;对 body 元素执行此操作将删除所有格式,并且对每个元素执行此操作会复制大量内容。
问题
有没有办法通过(最小)javascript遍历HTML文档中的所有节点,替换其直接子文本值中的单词,同时保留其剩余内容?