Firefox扩展和XUL:获取页面源代码

Fra*_*anz 11 javascript xul innerhtml firefox-addon

我正在开发我的第一个Firefox扩展,为此我需要获得当前页面的完整源代码.我怎么能用XUL做到这一点?

Lac*_*che 6

您将需要一个xul 浏览器对象来加载内容.

将"view-source:"版本的页面加载到浏览器对象中,方法与"查看页面源"菜单相同.请参阅函数viewSource()chrome://global/content/viewSource.js.该函数可以从缓存加载,也可以不加载.

加载内容后,原始来源由下式给出:

var source = browser.contentDocument.getElementById('viewsource').textContent;
Run Code Online (Sandbox Code Playgroud)

序列化DOM文档
此方法不会获得原始源,但可能对某些读者有用.

您可以将文档对象序列化为字符串.请参阅在MDC中将DOM树序列化为字符串.您可能需要在扩展中使用替代的实例化方法.

那篇文章讨论了XML文档,但它也适用于任何HTML DOMDocument.

var serializer = new XMLSerializer();
var source = serializer.serializeToString(document);
Run Code Online (Sandbox Code Playgroud)

这甚至可以在网页或firebug控制台中使用.


Phi*_*off 2

看起来确实没有办法获得“所有源代码”。您可以使用

document.documentElement.innerHTML
Run Code Online (Sandbox Code Playgroud)

获取顶部元素的innerHTML(通常是html)。如果您有类似 php 错误消息

<h3>fatal error</h3>
segfault

<html>
    <head>
        <title>bla</title>
        <script type="text/javascript">
            alert(document.documentElement.innerHTML);
        </script>
    </head>
    <body>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

内部HTML将是

<head>
<title>bla</title></head><body><h3>fatal error</h3>
segfault    
        <script type="text/javascript">
            alert(document.documentElement.innerHTML);
        </script></body>
Run Code Online (Sandbox Code Playgroud)

但错误信息仍然会保留

编辑:documentElement在这里描述: https ://developer.mozilla.org/en/DOM/document.documentElement