我正在尝试提取经过身份验证的网站的内容。
我尝试使用最新的Firefox附加组件SDK来制作扩展程序。
直到现在我学会了如何打开标签。
var Widget = require("widget").Widget;
var tabs = require('tabs');
exports.main = function() {
new Widget({
label: "My Mozilla Widget",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function(event) {
tabs.open("google.com")
}
});
};
我想获取刚刚打开的标签的内容并将其保存到本地文件。感谢。
答案 0 :(得分:0)
完成加载后,您必须附加内容脚本来获取页面的DOM HTML。
我不确定何时你认为页面是完全加载的,因为“内容加载”听起来像加载页面部分的AJAX请求。我假设在某种程度上,您可以在加载页面时在页面的上下文中触发函数pageLoaded
。您可以通过各种方式触发该功能:侦听DOM更改,监视AJAX请求,...
无论哪种方式,您都可以将内容脚本附加到页面:
const { data } = require('sdk/self');
// snip
let tab = tabs.open('google.com');
tab.on('ready', function(tab) {
let worker = tab.attach({
contentScriptFile: data.url('post-page-content.js')
});
worker.port.on('page-content', function(content) {
console.log(content);
// Save to a file using sdk/io/file or something
});
});
当页面已完全加载时,您的内容脚本post-page-content.js
应该使用页面内容向您的加载项脚本发送消息:
function pageLoaded() {
self.port.emit('page-content', document.documentElement.outerHTML);
}
// TODO Attach pageLoaded as an event listener to something