【问题标题】:Inject one line of JavaScript from firefox addon从 firefox 插件中注入一行 JavaScript
【发布时间】:2013-05-10 05:35:27
【问题描述】:

我对 FF 扩展创建完全陌生,我会比较具体。

当我在例如 Firefox 的内置沙箱中运行 JS 命令时,它工作得很好,所以我想制作一个 FF 插件,单击时会执行相同的 JS 命令。该命令基本上适用于网页:

javascript:$('.plus').click();

我想它不必像这样工作:

var Widget = require("widget").Widget;
var tabs = require('tabs');

exports.main = function() {

new Widget({
    id: "user-widget-1",
    label: "My Mozilla Widget",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function(event) {        
        javascript:$('.plus').click();
    }
});

};

谢谢。

【问题讨论】:

    标签: javascript firefox code-injection firefox-addon-sdk add-on


    【解决方案1】:

    $(.plus) 是 jQuery 语法,因此您可能希望将 jQuery 作为内容脚本加载到您的小部件中。您还想将代码作为内容脚本运行,例如:

    var data = require("sdk/self").data;
    
    new Widget({
        id: "user-widget-1",
        label: "My Mozilla Widget",
        contentURL: "http://example.com/foo.html",
        contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
    });
    

    data/myScript.js 类似于:

    $(document).ready(function() {
      $('.plus').click()
    });
    

    如果您不希望在文档加载时发生点击,而是希望在您的扩展程序中发生特定事件时发生点击,您可能需要查看communicating with content scripts。我还建议阅读general overview of content scripts

    【讨论】:

    • 您好,感谢您对我的帮助!但即使在文档加载时,该扩展仍然不起作用。我的代码如下所示:pastebin.com/raw.php?i=2HzApdti 我当然有 jquery.min.js 和 myScript.js。
    【解决方案2】:

    使用Page-Mod 将内容脚本注入网页,小部件中链接的内容脚本仅适用于小部件内容。此外,FF 29 已弃用小部件 API,建议您改用 Action button

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多