我正在创建一个firefox扩展,让操作员执行修改HTML文档内容的各种操作。操作员不编辑HTML,他们采取其他操作,我的扩展通过插入元素,添加属性等来修改文档。可以firefox扩展修改HTML文档的DOM然后保存为HTML吗?
当操作员完成后,他们需要能够将HTML文档保存为文件(或者让我的扩展名将其发送到Internet目标,但这不是必需的,因为他们可以通过电子邮件发送保存的文件)。
我想也许我的扩展中的JavaScript代码所做的更改会反映在HTML文档中,但是当我在修改后让Firefox浏览器“查看源代码”时,它会显示原始HTML文本。
我的问题是:
#1:什么是运营商节省我的分机已进行的所有更改HTML文档的最简单的方法?
#2:什么是我的扩展中的JavaScript代码处理HTML文档内容并写入本地磁盘上的HTML文件的最简单方法?
#3:任何有效的HTML内容无法在保存的文件中进行准确表示吗?
#4:TreeWalker是解决方案的一部分(见下文)?
从我的研究,到目前为止,一对夫妇的意见:
我读过有关的TreeWalker对象,这似乎提供了相当便捷方式,延期通过一切(或几乎一切走? )在HTML文件中。但它是否暴露了一切,所以原始(和我的修改)中的所有内容都可以保存而不会丢失任何重要的东西?
TreeWalker是否以“正确的顺序” - 我的扩展程序生成原始和/或修改的HTML文档所需的顺序遍历HTML文档?
对这些问题有什么隐晦或棘手的问题?
您的代码似乎将DOM文档中的单个元素保存到磁盘文件。我需要做的是将整个HTML文档保存到磁盘文件。你知道当你从浏览器菜单中选择“查看页面源代码”时你看到了什么吗?那么,这就是我需要保存的 - HTML文本格式的整个HTML文档。但是,在我的扩展对DOM做了很多更改之后(例如,插入几十个具有新属性的新元素),执行“查看页面源代码”时看到的是加载到浏览器中的原始HTML。我需要保存包含所有更改的HTML文本。 – honestann
是的,这是html标签,它将是整个页面,不包括doctype和标签本身的任何属性,因为html标签始终包含页面的所有代码。所以这将是'view source'页面中的所有内容,我检查过,innerHTML确实反映了通过js对DOM所做的任何更改,所以您应该是黄金。 – Achshar
这很酷,谢谢!你能解释每一步的作用吗?另外,有没有什么办法可以完全用我的扩展代码来完成同样的事情,所以操作员不必在浏览器中做任何事情(如查找和点击按钮)?我假设你上面显示的是我在扩展中插入的JavaScript,对吗?当你说“文件将下载”时,我假定你的意思是HTML文件将被写入运营商本地文件系统的“filename.html”中(可能在一些模糊的路径中)。我可以指定一个路径,特别是像我的扩展名所在的“chrome:// ...”吗? – honestann