首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有chrome扩展的任务自动化

带有chrome扩展的任务自动化
EN

Stack Overflow用户
提问于 2014-10-14 11:01:21
回答 1查看 4.4K关注 0票数 3

我试图自动完成从ebay页面获取客户数据并将其插入到另一个页面中的表单的任务。我用了宏,但我不太喜欢它。

镀铬扩展适合这种工作吗?

如果是的话,那么dom逻辑应该在后台页面上还是在内容脚本中呢?

有人能给我提供一个简单的代码示例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-14 14:32:12

注意事项:自2021年1月起,使用带chrome.scripting.executeScript()scripting权限的舱单V3,并将<all_urls>移动到host_permissions,而不是使用带有tabs权限的不推荐的chrome.tabs.executeScript()

任务

这里您需要的是一个Chrome扩展,它可以使用内容脚本在选项卡中读取客户页的DOM内容,然后存储信息并将其发送到另一个选项卡。

基本上,你需要:

  1. 在客户页面中注入内容脚本
  2. 检索数据并将其发送到后台
  3. 详细说明数据并将其发送到另一个内容脚本,该脚本将:
  4. 将数据插入另一页的窗体中。

执行情况:

因此,首先,您的manifest.json将需要访问选项卡和所需URL的权限,以及后台脚本的声明,如下所示:

代码语言:javascript
复制
{
    "manifest_version": 2,

    "name": "Extension name",
    "description": "Your description...",
    "version": "1",

    "permissions": [
        "<all_urls>",
        "tabs"
    ],

    "background": { "scripts": ["background.js"] }
}

现在,按照以下步骤:

  1. chrome.tabs.onUpdated添加一个侦听器以查找客户页面并注入第一个内容脚本,再加上使用表单查找选项卡并注入第二个脚本,所有这些都来自background.js: chrome.tabs.onUpdated.addListener(function(tabID,info,选项卡){ if (~tab.url.indexOf("someWord")) { chrome.tabs.executeScript(tabID,{file:"get_data.js"});//第一个脚本获取数据} if (~tab.url.indexOf("someOtherWord")) { chrome.tabs.executeScript(tabID,{file:"use_data.js"});//第二个脚本使用表单}中的数据); 好,如果get_data.js包含"someWord",那么上面的代码将在页面中注入use_data.js脚本(显然,必须用正确的单词替换"someWord“和"someOtherWord”,以标识正确的页面URL )。
  2. 现在,在您的get_data.js中,您需要检索数据并使用chrome.runtime.sendMessage将其发送到background.js脚本,如下所示: var myData =myData //只是一个示例chrome.runtime.sendMessage({myData:“这里是数据”,data: myData});
  3. 现在您已经发送了数据,因此在background.js内部,您需要一个侦听器来捕获并详细说明它: chrome.runtime.onMessage.addListener(function(request,发送方,sendResponse) { if (request.message =“这里是数据”){ //详细说明它的chrome.tabs.query({url:“*://request.message/page/to/match/*”},函数(制表符){ chrome.tabs.sendMessage(tab.id,{message:“这里是数据”,data: request.data});};});
  4. 好的,您几乎完成了,现在您需要在第二个内容脚本(即use_data.js )中侦听该消息,并在表单中使用它: chrome.runtime.onMessage.addListener(function(request,发件人,sendResponse) { if (request.message ==“这里是数据”){ //使用数据在页面中做某事: var myData = request.data;//例如: document.getElementById("input-id").textContent = data;});

你就完蛋了!

文档

这只是一个例子,我强烈建议您查阅文档以充分了解要使用的函数和方法,以下是一些有用的链接:

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26359206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档