javascript - 使用 page-mod (Firefox Addon) 将 onclick 事件添加到特定按钮

标签 javascript firefox-addon firefox-addon-sdk

我正在尝试使用插件生成器开发 Firefox 插件。

我想修改基于 Web 的邮件程序的邮件编辑器。
(在下面的代码中,我正在尝试使用 Yahoo! Japan 的邮件服务。)

当用户按下发送按钮时,我想执行特定的代码。

插件代码是:
main.js

var self = require("self");
var pageMod = require("page-mod");


pageMod.PageMod({
    include: "*.mail.yahoo.co.jp",
    contentScriptWhen: 'end',
    contentScript: "document.getElementById('send_top').setAttribute('onclick', 'alert(\"blabla\")');"
});

电子邮件编辑器页面中的按钮:

<input id="send_top" class="inputbutton" type="submit" title="Submit an email"
       value="Submit" name="action_msg_send" accesskey="9">

当用户“提交”按钮时,我想显示对话框。

最佳答案

看起来您没有在内容脚本中正确添加 onclick 处理程序。您可以改为使用如下代码:

document.querySelector('#send_top').onclick = function() { 
    alert('bla bla'); 
}

这是附加组件构建器中的一个工作示例:

https://builder.addons.mozilla.org/addon/1048430/latest/

使用 contentScript 属性添加内容脚本代码的一个缺点是难以调试。一些使这更容易的指针:
  • 始终使用“contentScriptFile”,并将代码写入位于附加组件数据文件夹中的单独 js 文件中。
  • 使用 Firefox 的“Scratchpad”开发人员工具测试您的代码,您可以通过转到工具 -> 开发人员 -> ScratchPad 打开该工具。去做这个:
  • 打开你正在修改的页面
  • 打开便签本
  • 将您的 JS 代码粘贴到 Scratchpad
  • 转到执行 -> 运行以运行您的代码
  • 关于javascript - 使用 page-mod (Firefox Addon) 将 onclick 事件添加到特定按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106033/

    相关文章:

    javascript - 从 JavaScript 中的 <a> 标签调用函数?

    javascript - '/' 用 url 中的 %252F 替换,同时以 Angular 重新加载 $state

    javascript - 是否可以从 Firefox 运行 bash 脚本? (使用 Firefox 附加 SDK)

    javascript - 循环调用异步函数

    javascript - 当您有 'Include' 的新数据时,更新/刷新 Page-Mod 的最佳方法是什么?

    javascript - Ember RSVP Promise 模型无法通过 firefox 插件端口消息传递方案解析

    javascript - 使用 node js 执行命令行

    javascript - 在 Mozilla firefox 附加组件中下载信息

    firefox - 使用 Add-on SDK 添加工具栏按钮?为 Firefox 附加组件集成 XUL 和附加 SDK?

    javascript - 拼接对象的属性?