【问题标题】:How can I get the html of a page as a string in a Firefox extension?如何在 Firefox 扩展中将页面的 html 作为字符串获取?
【发布时间】:2014-12-02 03:32:31
【问题描述】:

我需要获取作为字符串加载的当前页面的 html,以便我可以在以后操作它并使用该信息。我需要在 Firefox 扩展程序中使用它,但我在让它工作时遇到了很多麻烦。

我最初尝试使用 .outerHTML 存储值,我已经在其他地方看到并开始使用它。这是一个如何工作的示例:

var pageHTML = document.documentElement.outerHTML; 

我也尝试只搜索我当时需要的作品,如下所示:

document.getElementById("header")

但是,这些似乎都无法访问 HTML。我认为这是因为代码在浏览器中运行,而不是在文档本身中。如何访问从 Firefox 扩展加载到选项卡中的页面的 HTML“文档”。

【问题讨论】:

    标签: javascript html firefox firefox-addon-sdk


    【解决方案1】:

    Firefox 插件 SDK 包含一个名为 page-mod 的模块,用于此目的。在page-mod 下运行的内容脚本将在网页上下文中运行,而不是典型的沙盒上下文。

    来自该页面的文档:

    您可以在脚本中修改文档:

    var pageMod = require("sdk/page-mod");
    
    pageMod.PageMod({ include: "*.mozilla.org",
                      contentScript: 'document.body.innerHTML =' +
                                     '"<h1>Page matches ruleset</h1>";' 
    });
    

    【讨论】:

    • 谢谢!我可以在 pagemod 中将值存储在扩展变量中吗?
    • 我不完全确定你的意思 - 不幸的是,我自己对 SDK 的实验并没有远远超出仅使用 page-mod 进行 DOM 操作。该文档很好地阐述了限制,以及如何与您的主要插件代码进行通信。
    • 好吧,我也不完全确定哈哈。我想知道这种方法是否可以将页面上脚本中的值存储到扩展中运行的变量中。基本上,有没有办法从这个 pagemod 输出一个变量并将其保存在一个可由扩展程序本身操作的变量中?我不确定这是否是我正在寻找的最佳方式,但这是我目前唯一的想法;D
    • @JasePellerin 是的,阅读the docs
    • 非常感谢大家,我明白了!
    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2010-10-23
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多