使用JavaScript获取整个文档的字符串

5

我正在开发一个Firefox扩展程序,最理想的情况是能够将整个DOM作为字符串获取,不考虑任何数据结构。我只希望在缓冲区中看到“查看源代码”中所见的内容。我一直在查看JavaScript参考和HTMLDocument等内容,但没有找到合适的方法。

理想情况下,我也可以向这个缓冲区写入内容(似乎是可能的,即document.writeLn())。我希望有一个document.read()的方法,难道我只是一个JS新手吗?


请更具体地说明,您想通过这个做什么?“写入DOM”并不像听起来那么简单(可能会重新创建元素,丢失事件绑定等),在大多数情况下,这是错误的。DOM是一种数据结构,应该按照这样的方式进行修改,而不是首先序列化,然后再反序列化。 - Matti Virkkunen
我想对它进行搜索和替换。 - user132014
你想要替换哪种类型的内容?文本、标签还是属性? - Matti Virkkunen
我必须输入三个单词,因为过滤器的缘故。 - user132014
然后,您只需递归循环遍历DOM树,查找文本节点并替换其内容。当然,如果在文本之间有标签,则不会被捕获。替换带有标签的文本并不是非常简单的事情。 - Matti Virkkunen
4个回答

8
document.body.innerHTML

这应该可以正常工作


3
也许你想遍历DOM的所有节点?你可以使用document.childNodes来递归地处理每个节点。

0

你可以尝试使用 document.body.innerHTML,如果你需要头部内容,也可以尝试使用 document.getElementsByTagName('head')[0].innerHTML 并将两者合并。


document 对于 Firefox 并没有 innerHTML 属性。 - kennytm
我不确定这在其他地方是否适用,但我刚在Firefox扩展中测试了它,结果返回为null。 - user132014
是的,是的 - 我打错了。我想说的是 document.body.innerHTML。我已经修复了它,并添加了获取 head 内容的建议。 - levik
2
@levik:为什么不直接使用document.documentElement.innerHTML来获取<head><body>呢? - kennytm
也许是为了其他目的...只是想说我也尝试过那个。我意识到那不是针对我的。 - user132014
显示剩余3条评论

0

不确定您是否可以从 FF 扩展加载 jQuery,但是 -

这只是另一天作为 jQuery 问题出现的。 您可以使用 jQuery 选择器 $('*').html() 来获取所有没有“html”标记的 html。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接