我正在开发一个 Firefox 扩展项目,该项目需要我使用 TAB 键来切换页面上的所有链接、提取其 URL、获取其源代码并解析它。
目前,我可以使用 TAB 键来切换页面以通过以下方式获取其 URL:
exports.main = function() {};
var pageMod = require("page-mod");
pageMod.PageMod({
include: "*.org",
contentScriptWhen: 'ready',
contentScript:
'document.onkeydown = function(ev) {var key; ev = ev || event; key = ev.keyCode; if (key == 9) { setTimeout (function(){console.log(document.activeElement.href);'+
'}, 1000 ); } };'+
'var a = "Access Tab URL Extraction: New Page Found."; console.log(a);'
});
...并使用以下内容获取任何给定 URL 的源代码(例如维基百科):
exports.main = function() {};
console.log("Start");
var pageWorkers = require("page-worker");
var script = "var elements = document.body.innerHTML; " +
" postMessage(elements) " ;
// Create a page worker that loads Wikipedia:
pageWorkers.Page({
contentURL: "http://en.wikipedia.org/wiki/Internet",
contentScript: script,
contentScriptWhen: "ready",
onMessage: function(message) {
console.log(message);
}
});
那么,如何将我从 Pagemod 获得的 URL(在本例中为 document.activeElement.href)传递到 Page-worker 的 contentURL 并使其在每次按下 TAB 键时获取并显示源代码,因为新的 URL 不断被提取在 Pagemod 中。
我尝试了以下方法,但它不起作用,似乎不能将 page-worker 作为 page-mod 的 contentScript 的一部分调用?
exports.main = function() {};
var pageMod = require("page-mod");
var pageWorkers = require("page-worker");
pageMod.PageMod({
include: "*.org",
contentScriptWhen: 'ready',
contentScript:
//Get New URLs by Pressing the Tab Key
'document.onkeydown = function(ev) { var key; ev = ev || event; key = ev.keyCode; if (key == 9) { setTimeout (function(){console.log(document.activeElement.href);'+
'}, 1000 ); } };'+
//Fetch new URL source code
'document.onkeyup = function(ev) { var key; ev = ev || event; key = ev.keyCode; if (key == 9) {'+
'pageWorkers.Page({'+
'contentURL: "document.activeElement.href",'+
'contentScript: "var elements = document.body.innerHTML;"+"postMessage(elements)",'+
'contentScriptWhen: "ready",'+
'onMessage: function(message) {'+
'console.log(message);'+
'}'+
'});'+
' } };'
});
任何帮助将不胜感激!:)