使用函数触发 chrome.browserAction.onClicked

2024-01-06

我想触发点击,以下代码正在侦听:

chrome.browserAction.onClicked.addListener(function(tab) {});

原因是我有一个工作扩展,它正在后台脚本(上面的 addListener)中监听并在单击时执行一些脚本:

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {file: 'abc.js'});
chrome.tabs.executeScript(tab.id, {file: 'xxx.js'});
});

现在我想从上下文菜单触发这个“onClicked”:

var myContextPage = chrome.contextMenus.create({"title": myTitle, "contexts":["page"],
                                     "onclick": fctContext});

因此,我认为最简单的方法是在 fctContext 中“单击”。 也许有更好的方法,但我不知道如何解决我的问题。我还尝试运行“executeScript”,但这也不起作用。

提前致谢!

//Update


请记住,参数在 JavaScript 中是可选的。每个函数都有一个关联的arguments目的。该参数充当数组。就您而言,其中一个需要这样做,而另一个则不需要。在一个函数(浏览器操作)中拥有 N 个参数与在另一个函数(上下文菜单)中拥有 M 个参数是相同的,这两个参数之间的唯一区别是arguments.callee它提供了一种在函数本身中引用实际代码的方法。如果您想要一些基本的东西,则不必担心这一点。

Your fctContext可能是您的 browserAction 单击和上下文菜单之间的可共享代码。我在“重新加载所有选项卡”扩展中做了类似的事情。

搜索this.reload in https://github.com/mohamedmansour/reload-all-tabs-extension/blob/master/js/reload_controller.js https://github.com/mohamedmansour/reload-all-tabs-extension/blob/master/js/reload_controller.js,你会注意到this.reload用于上下文菜单和浏览器操作。您只需分享代码即可。

更新了参数示例:

就您而言,您会做完全相同的事情。

// Shared code. When the argument length is two, it is coming from the context
// menu, while a single argument is coming from the browser action.
function fctContext() {
   var tab = arguments.length == 2 ? arguments[1] : arguments[0];
   // Do whatever you want with the tab.
}

// Browser Action
chrome.browserAction.onClicked.addListener(fctContext);

// Context Menu
chrome.contextMenus.create({
   title: myTitle,
   contexts: ['page'],
   onclick: fctContext
});

上述方法的问题是可维护性,如果 API 发生变化,它可能会崩溃。就我个人而言,我宁愿明确地指出这些论点。因此用户不必在参数数组中进行查找。

function fctContext(tab) {
   // Do whatever you want with the tab.
}

// Browser Action
chrome.browserAction.onClicked.addListener(fctContext);

// Context Menu
chrome.contextMenus.create({
   title: myTitle,
   contexts: ['page'],
   onclick: function (detail, tab) { fctContext(tab) }
});

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用函数触发 chrome.browserAction.onClicked 的相关文章

  • libxmljs 的替代品 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目标 使用 Node js 访问网页 使用 xpath 语法操作 DOM 并打印新的 DOM libxm
  • ReactiveX:仅对每组中的最后一项进行分组和缓冲

    如何对 Observable 进行分组 并从每个 GroupedObservable 中仅将最后发出的项保留在内存中 这样每个组的行为就像BehaviorSubject 一样 像这样的东西 user 1 msg Anyone here us
  • 雅虎 OAuth2 隐式授予流程不适用于新的雅虎应用程序

    我有现有的网络应用程序和专用雅虎应用程序 https developer yahoo com apps 在职的 它用OAuth2 隐式授权流程 https developer yahoo com oauth2 guide flows imp
  • 实现悬停信息框

    我有一个日历 当用户将鼠标悬停在单元格上时 会出现一个很大的信息框 其中包含该日期的详细信息 虽然当用户离开时使信息框消失 但我遇到了一些麻烦 我基本上想要它 这样当鼠标光标移出信息框隐藏的日历单元格时 它就会消失 但我遇到了麻烦 因为mo
  • Javascript 在另一个函数中检测“Shift”键按下

    我正在从 Flash 影片 使用外部接口 调用我的 html 页面中的 Javascript 函数 并且我想知道调用该函数时用户是否按下了 Shift 键 例如 如果我通过鼠标单击调用该函数 这似乎很简单 因为我可以传递事件并检查 if e
  • Sequelize - 使用 es6 和模块运行迁移

    我不确定我是否做错了什么或者什么 我觉得我正在运行一个现代的 相当常见的堆栈 但我无法让新的 Sequelize v6 与我的设置完美配合 我在 Node v14 17 Sequelize v6 6 2 上 在我的 package json
  • 使用命名的成功/错误回调在 AngularJS 中声明一个 Promise

    我正在尝试做一些与 http 服务非常相似的事情 根据我的理解 http 返回一个 Promise 对象 使用它时 语法是 http success function data success callback error function
  • 在多个动态添加的表单上初始化 jQuery validate() 函数

    有人建议最好初始化一个 form validate 在页面加载而不是点击事件上运行 jquery form validate 插件仅允许在输入更改时提交 https stackoverflow com questions 10984196
  • React 应用程序中的 addEventListener 不起作用

    一些背景 我正在尝试消费自定义网络组件在 React 应用程序中并尝试监听来自 Web 组件的事件 我相信您不能只在自定义 Web 组件上以通常的反应方式处理事件 i e
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • Firebase 身份验证在 iOS 登录时卡住,没有错误

    我已经使用电子邮件和密码设置了 firebase 身份验证登录的最基本实现 firebase auth signInWithEmailAndPassword email password then gt console log Logged
  • 如何在 javascript 中基于类型字符串创建新对象?

    如何基于变量类型字符串 包含对象名称 在 javascript 中创建新对象 现在我有 随着更多工具的出现 列表会变得更长 function getTool name switch name case SelectTool return n
  • 将 onclick 事件应用于页面加载时不存在的元素

    我将列表样式设置为看起来像选择框 并且当用户单击列表中的元素时我想触发一个函数 但是该元素是通过加载的AJAX因此 当页面加载并且我无法绑定时不存在onclick事件到它onDomReady 如果我把它作为一个普通的选择列表 我可以只标记一
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 弹出窗口的动态高度取决于内容,可能吗?

    是否有可能获得一个宽度始终为 400px 的弹出窗口 但根据弹出窗口中的内容动态高度 我已经看到了这个 但不知道如何将其应用到弹出窗口 调整 iframe 的宽度高度以适应其中的内容 https stackoverflow com ques
  • 检测浏览器选项卡是否具有焦点

    是否有可靠的跨浏览器方法来检测选项卡是否具有焦点 场景是 我们有一个定期轮询股票价格的应用程序 如果页面没有焦点 我们可以停止轮询并为每个人节省流量噪音 特别是当人们喜欢打开具有不同投资组合的多个选项卡时 Is window onblur
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax

随机推荐

  • 如何替换已弃用的 android.support.v4.app.ActionBarDrawerToggle

    昨天 17 10 2014 我更新了 Android SDK 并support library v4 jar我的应用程序 现在我收到与以下内容相关的弃用警告ActionBarDrawerToggle 阅读文档 https developer
  • 什么时候使用vtable?

    vtable 仅用于虚拟函数查找 还是也用于普通成员函数查找 从技术上讲 这是一个实现细节 C 标准没有提及 vtable 或 vptr 但通常情况下 编译器只会在多态意义上 即通过指向基类的指针 引用 调用成员函数时才会选择使用 vtab
  • 加快 Firebase 存储下载速度

    我正在尝试从 Firebase 存储中提取视频并将其放入我的 Android 应用程序上的幻灯片中 但视频需要很长时间才能加载 有谁有任何替代方案或方法来加快数据下载速度 您可以将文件存储在区域存储中 例如 us east1 请参阅http
  • 如何仅显示一页以上的报表的第 x 页(共 y 页)

    我正在使用 jasper reports 4 5 0 我正在使用这个碧玉生成不同格式的报告 我想在我的报告中显示第 X 页 共 Y 页 所以我使用 iReport 提供的页码文本字段 该字段在调色板中可用 它显示所有报告中的页码 甚至是单页
  • 从更新站点下载 eclipse 插件的工具

    我需要在未连接到 Internet 的计算机上安装 eclipse 插件 但找不到用于本地安装的 dist 是否有一个工具可以从更新站点下载插件并创建本地安装存档 或本地更新站点 有传言说你可以用 eclipse 来做到这一点 但我找不到任
  • 如何更改 UITextField 上清除按钮的色调颜色

    我的 UITextfield 上有一个自动生成的清除按钮 具有默认的蓝色色调 我无法将色调颜色更改为白色 我尝试修改故事板和代码但没有成功 并且我不想使用自定义图像 如何在不使用自定义图像的情况下更改默认的透明按钮色调颜色 干得好 Tint
  • HTML.fromHTML - Android 中的 TagHandler

    我有一个 TextView 我想将 HTML 设置为 HTML fromHTML 但我想过滤掉所有 img 带有标签处理程序的标签 我想将所有链接 src 保存在列表数组中 那可能吗 Thanks 是的 这是可能的 您可以使用jsoup h
  • 如何确定电子邮件地址是 Microsoft“工作或学校”帐户还是 Microsoft 帐户

    我想在 Azure 多租户环境中对 Microsoft 帐户和 工作或学校 帐户进行身份验证 每种身份验证类型需要不同的请求 如果我尝试针对 工作或学校 请求以 Microsoft 帐户身份登录 则登录将在 Microsoft 登录时失败
  • 在 api 27、28、29 中混淆应用程序时,工作管理器不会运行

    我有一个每 15 分钟运行一次的定期任务 当混淆应用程序时 如果应用程序从后台被终止 工作管理器将不起作用 测试设备 一加7T 诺基亚5 Google Pixel 2模拟器 仅当应用程序位于前台或后台时 工作管理器才会执行 禁用 progu
  • 如何在混合(C#/C++)调试中设置数据断点?

    我用 C 启动程序 然后调用一些非托管 C 当我在非托管 C 中中断一行时 新数据断点 菜单项呈灰色 有没有办法解决 所以要做到这一点我必须 将非托管dll设置为启动项目 将托管程序设置为启动命令 将调试模式设置为Native 中断执行 或
  • 使用有关 WooCommerce 用户创建的生成密码发送电子邮件通知

    在 WooCommerce 中 使用下面的代码我创建新的 WP User 其中随机密码并将用户角色设置为 客户 我想在购买时自动创建帐户 然后我用WC Emails将登录详细信息发送给买家 在这种情况下 我需要纯密码 但我真的不知道为什么附
  • 如何锁定 SVN 主干(除了来自分支的合并)?

    我想阻止开发人员直接在主干上工作 我的目标是强制所有开发人员离开主干并在自己的分支上工作 直到 CI 测试通过 然后 他们必须从主干合并到分支 以获取最新更改 运行并通过测试 然后再合并回主干 这种 SVN 使用方式有什么规则吗 限制主干提
  • “grep”命令的退出状态代码

    The grep http linux die net man 1 grep手动在退出状态部分报告 EXIT STATUS The exit status is 0 if selected lines are found and 1 if
  • CTE 的意外结果

    我创建了一个使用多个 CTE 的复杂流程 主要用于递归分层工作 在小样本数据集上 一切都按预期进行 但是当我将代码应用于大数据集时 我收到了意外 且错误 的结果 我想我已经将范围缩小到了 CTE 递归 CTE 是在几个早期 CTE 中处理的
  • 在 Datalab 中查询 Hive 表时出现问题

    我已经创建了一个 dataproc 集群 其中包含更新的 init 操作来安装 datalab 一切正常 除了当我从 Datalab 笔记本查询 Hive 表时 我遇到了 hc sql select from invoices limit
  • Chrome 扩展:点击编辑当前网址,然后重定向到编辑后的网址

    我是一名心理学学生 我经常阅读论文 大学图书馆提供数据库的访问 但我每次都需要使用图书馆搜索引擎并登录 很烦人 我找到了一种避免跳转页面的方法 方法如下 我在Google Scholar中找到一篇论文后 在目标数据库地址末尾添加 ezp l
  • Symfony2 SonataAdminBundle 密码字段加密

    我有 FOSUserBundle 来管理我的用户 SonataAdminBundle 来管理我的网站 我有一个问题 每当我尝试更改 添加任何用户的密码时 密码都不会编码到sha512 但是当用户在 fosuserbundle 注册页面中注册
  • SQLite查询:获取一行的所有列(android)?

    这是架构 SQL查询是 从unjdat中选择 其中col 1 myWord 即 我想显示 col 1 为的行的所有列myWord int i String temp words new ArrayList
  • 如何使用正则表达式将缩写与其含义相匹配?

    我正在寻找与以下字符串匹配的正则表达式模式 一些示例文本 SET 演示了我正在寻找的内容 能源系统模型 ESM 用于寻找特定的最佳值 SCO 有人说计算机系统 CUST 很酷 夏天应该首选户外比赛 OUTS 我的目标是匹配以下内容 Some
  • 使用函数触发 chrome.browserAction.onClicked

    我想触发点击 以下代码正在侦听 chrome browserAction onClicked addListener function tab 原因是我有一个工作扩展 它正在后台脚本 上面的 addListener 中监听并在单击时执行一些