将Firefox加载项转换为暂存器格式

时间:2015-12-19 06:47:59

标签: javascript firefox firefox-addon firefox-addon-sdk jsctypes

在暂存器中调试Firefox加载项会在以下情况下返回一些错误:

  1. 使用require
  2. 定义一些GUI,如图标,按钮等。
  3. 与其他网页(即内容脚本)进行互动
  4. (可能还有其他一些案例)
  5. 考虑以下Get Cursor Position

    的示例
    Components.utils.import("resource://gre/modules/ctypes.jsm");
    var lib = ctypes.open("user32.dll");
    
    /* note: if you go to GetCursorPos page on MSDN, it says first argument is of structure POINT, so lets create that structure,
     * the link here shows that that x and y are type Long which is ctypes.long
     */
    // https://msdn.microsoft.com/en-us/library/windows/desktop/dd162805%28v=vs.85%29.aspx
    var POINT = new ctypes.StructType("tagPOINT", [
      { "x": ctypes.long },
      { "y": ctypes.long }
    ]);
    
    /* Declare the signature of the function we are going to call */
    var GetCursorPos = lib.declare('GetCursorPos',
        ctypes.winapi_abi,
        ctypes.bool,
        POINT.ptr
    );
    
    /* Use it like this */
    var point = POINT();
    var ret = GetCursorPos(point.address());
    
    Components.utils.reportError(ret);
    Components.utils.reportError(point);
    
    lib.close();
    

    使用更好的示例或其他内容编辑和完成问题的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

对于SDK插件,我建议改为使用jpm watchpost + extension auto installer

每次保存文件时,这将自动创建一个xpi并在浏览器中重新安装。只需保持浏览器控制台打开,就可以获得任何潜在的错误输出。

  

与其他网页(即内容脚本)进行互动

浏览器工具箱的暂存器可以选择执行它的目标环境

  

使用require

在Chrome上下文中,可以通过let { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js")

导入

如果您使用插件调试器,我认为插件的要求应该可用