修改 web 页面

修改 web 页面

通过程序修改页面

如何修改程序使其在用户要求时才吞页面。现在修改上面的例子,在点击右键菜单项时才注入内容脚本。

修改 "manifest.json" 内容如下:

json{

"manifest_version": 2,

"name": "modify-page",

"version": "1.0",

"permissions": ["activeTab", "contextMenus"],

"background": {

"scripts": ["background.js"]

}

}

这里我们要移除"content_scripts"键值,并添加两个键:

permissions:要向页面中注入脚本,就需要拥有修改页面对应的权限。activeTab可以临时获得修改当前活动标签所加载的页面的权限。另外还通过 contextmenus 来获取添加右键菜单项的权限。

background: 加载名为 "background.js" 的 "background script" (长期有效的后台脚本),在该脚本中,我们将设置注入右键菜单的内容脚本。

在 "modify-page" 文件夹下创建名为 "background.js"的新文件,内容如下:

jsbrowser.contextMenus.create({

id: "eat-page",

title: "Eat this page",

});

browser.contextMenus.onClicked.addListener(function (info, tab) {

if (info.menuItemId == "eat-page") {

browser.tabs.executeScript({

file: "page-eater.js",

});

}

});

在该脚本中我们创建了一个右键菜单项,给了它一个具体的 id 和标题 (将在菜单中显示的文本)。然后又设置了一个事件侦听器,当用户点击菜单项时,检查该菜单项是否就是我们的吞页菜单项。如果是,就通过tabs.executeScript() 接口,把"page-eater.js" 注入到活动标签页中。这个接口用标签 ID 做为参数:如果省略标签 ID 参数,就默认把脚本注入当前活动标签。

现在,附加组件看起来像这样:

modify-page/

background.js

manifest.json

page-eater.js

重新加载WebExtension, 打开页面 (这次可以是任何一个页面) 激活右键菜单,然后选择 "Eat this page":

备注:请注意,虽然此视频显示在 addons.mozilla.org 工作的 content scripts,但目前该网站已禁止 content scripts。

相关推荐