标签: firefox-addon-sdk

在Page-Mod中使用远程内容脚本文件/ Javascript

有没有办法轻松使用远程javascript文件作为内容脚本与page-mod API

我正在尝试构建一些简单的插件供我自己使用,以自动化一些重复的东西.因为我将要修改的页面会不时更改,我将需要相应地更新"内容脚本"javascript,如果我只需要在我的服务器上编辑它并且插件/扩展将再次工作,那将是很好的无需编辑和重新打包xpi.我很确定我能够一起破解可以实现这一目标的东西,但是如果有任何简单的方法可以做到这一点我都是耳朵:)

firefox-addon firefox4 firefox-addon-sdk

3
推荐指数
1
解决办法
1292
查看次数

用插件读取cookie

我正在尝试创建一个插件,在用户登录到我的网站后,我将尝试读取该域的会话ID并将其用于与我的插件的进一步交互.我使用在线firefox插件构建器,我尝试了这个例子cookies mdn.通过使用此代码,它返回我,我没有权利阅读XPCComponents.classes:

Fehler: An exception occurred.
Traceback (most recent call last):
  File "C:\Users\tasos\AppData\Roaming\Mozilla\Firefox\Profiles\812iobvo.default\flightdeck\resources\jid0-d0ba10rpeed0a0ftwmx80raes0q-at-jetpack-tasosthegreat-2-data\process.js", line 4, in 
Error: <https://builder.addons.mozilla.org> wurde die Erlaubnis für das Lesen der Eigenschaft XPCComponents.classes verweigert.
Run Code Online (Sandbox Code Playgroud)

它是与在线插件构建器一起使用的正确代码吗?

到目前为止,这是我的整个代码:

main.js:

var data = require("self").data;

var cm = require("context-menu"); 
cm.Item({   
     label: "My Menu Item",
     contentScriptFile: data.url('process.js') 
       });
Run Code Online (Sandbox Code Playgroud)

和process.js:

self.on("click", function (node, data) {


        var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);  
    var uri = ios.newURI("http://www.google.com/", null, null);  
    var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);  
    var cookie = cookieSvc.getCookieString(uri, null);  
});
Run Code Online (Sandbox Code Playgroud)

firefox firefox-addon firefox-addon-sdk

3
推荐指数
1
解决办法
1495
查看次数

如何使用Firefox Add-On SDK获取所选文本?

我正在尝试使用在线Add-On SDK创建一个Firefox附加组件.

我从一些简单的东西开始 - 我想添加一个工具栏按钮来读取当前选定的文本.

Selection对象的文档使这看起来很简单:

var selection = require("selection");
if (selection.text)
  console.log(selection.text);
Run Code Online (Sandbox Code Playgroud)

这似乎对我不起作用,我得到了null.

这是我的完整代码:

var selection = require("selection");

require("widget").Widget({
    id: "widgetID1",
    label: "Test Mozilla Widget",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function(event) {
        console.log('selection.text = ' + selection.text);
    }
});
Run Code Online (Sandbox Code Playgroud)

我也尝试selectiononClickeven中创建对象,效果相同.
我能够使用该select事件获得有关新选择的通知,所以我想我可以使用它而不是(并保留值),但我想知道为什么上面的代码不起作用...我做错了什么?

firefox firefox-addon firefox-addon-sdk

3
推荐指数
1
解决办法
1731
查看次数

与Firefox附加脚本和内容脚本的并发性

当我使用Add-on SDK编写Firefox附加组件时,我注意到附加代码和内容脚本代码阻止了彼此的执行.此外,附加代码似乎甚至阻止了与其他Firefox窗口(不仅仅是标签)的交互.

Firefox附加组件的并发/进程模型是什么?

是否可以在没有合作多线程(la定时器)的情况下同时运行附加代码和内容脚本代码?

加载了多少次加载代码?每个窗口一次?每个标签一次?一旦?

文件规定:

Mozilla平台正朝着一个模型发展,在该模型中,它使用单独的流程来显示UI,处理Web内容和执行附加组件.主要附加代码将在附加组件进程中运行,并且不能直接访问任何Web内容.

所以我希望将来它们确实是不会相互干扰的独立过程,但现在似乎并非如此.


更新:

我已尝试使用附加代码中的页面工作程序,但不幸的是,它仍会阻止内容脚本(以及所有其他javascript).我也尝试在页面工作者中使用Web worker,但是在调用web worker的postMessage函数时出现以下错误.

TypeError:worker.postMessage不是函数

我还尝试在page-worker中创建iframe,然后在iframe中创建一个web worker,但遗憾的是我不能使用page-worker中的window.addEventListener.我收到以下错误:

TypeError:window.addEventMessage不是函数

最后,我尝试将脚本(通过脚本元素)注入页面工作者页面,以创建一个似乎有用的Web工作者.不幸的是,我无法与此Web工作者通信,因为我只能通过document.defaultView.postMessage向其发送消息.

哦,我编织的缠结的网...

content-script - > add-on - > page-worker - > iframe - > web worker - >我的代码


我举了一个简单的例子:

的package.json

{
    "name": "test", 
    "author": "me", 
    "version": "0.1", 
    "fullName": "My Test Extension", 
    "homepage": "http://example.com", 
    "id": "jid1-FmgBxScAABzB2g", 
    "description": "My test extension"
}
Run Code Online (Sandbox Code Playgroud)

LIB/main.js

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

pageMod.PageMod({
    include: ["http://*", "https://*"],
    contentScriptWhen: "start",
    contentScriptFile: [data.url("content.js")],
    onAttach: function (worker) …
Run Code Online (Sandbox Code Playgroud)

firefox-addon firefox-addon-sdk

3
推荐指数
1
解决办法
3237
查看次数

Firefox Addon SDK中的HTML5文件API

有没有办法在内容脚本中访问Fire Fox插件sdk中的Html5文件api?

这是为了存储用户添加的单词及其含义所必需的.数据可能会变大,因此本地存储不是一种选择.

 window.requestFileSystem3 = window.requestFileSystem || window.webkitRequestFileSystem;
Run Code Online (Sandbox Code Playgroud)

给我错误TypeError:window.requestFileSystem3不是一个函数.

我问这个是因为我从Google Chrome扩展程序移植此代码,允许在内容脚本中访问文件api.

其他问题

1)如果不允许HTML5文件API,那么我应该使用文件模块吗?

2)文件模块是否允许访问文件系统上的任何文件,而不是只访问沙盒访问文件系统的Html5文件api?

3)假设我必须使用文件模块什么是存储我的文件的最佳位置(如用户配置文件目录或扩展目录)以及如何在代码中获得此路径.

我为这个问题中的许多子问题道歉.谷歌对这个话题并不是很有帮助.

任何示例代码都非常有用.

firefox-addon-sdk content-script html5-filesystem

3
推荐指数
1
解决办法
1576
查看次数

如何在Firefox插件中实现Chrome扩展程序的chrome.tabs.sendMessage API

我正在使用Addon-Builder进行Firefox插件开发.我不知道如何在Firefox插件中实现Chrome扩展程序的chrome.tabs.sendMessage API.代码是这样的(代码在background.js中,类似于Firefox插件中的main.js):

function sendMessageToTabs(message, callbackFunc){
    chrome.tabs.query({}, function(tabsArray){
        for(var i=0; i<tabsArray.length; i++){
            //console.log("Tab id: "+tabsArray[i].id);
            chrome.tabs.sendMessage(tabsArray[i].id,message,callbackFunc);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能做到这一点?

tabs firefox-addon google-chrome-extension dom-events firefox-addon-sdk

3
推荐指数
1
解决办法
2659
查看次数

FF Addon SDK是否有用于打开设置页面的API?

我使用simple-prefs模块来配置插件设置.如何以编程方式打开插件的设置页面?

firefox-addon-sdk

3
推荐指数
1
解决办法
319
查看次数

firefox附加SDK cfx工具打开url参数

我正在使用Add-on SDK创建firefox扩展,我使用cfx工具来测试和运行附加组件.

当我尝试从命令行运行工具时;

cfx run '-url "www.google.com"'
Run Code Online (Sandbox Code Playgroud)

它确实打开了Firefox但没有导航到google.com.只需打开空白页面,显然它不会运行我的扩展程序.我需要手动导航到一个网址,以触发我的基于JavaScript的扩展.

有没有办法调用cfx工具打开特定网址?

firefox-addon firefox-addon-sdk

3
推荐指数
1
解决办法
302
查看次数

Firefox插件:如何从网页抓取数据?

目的

我正在尝试为网站表单创建一个通用答案数据库.表单是对计算机硬件规范的描述,我试图使其基于模型字段,其他字段自动填充.扩展有两个按钮,"populate"将基于模型字段,检查数据库中是否有匹配的条目,然后根据该数据将数据填充到表单中.第二个按钮是"保存",它将获取字段中的数据并将其与模型字段结合并将其放入数据库中.

所以,我的主要问题是与网页本身进行交互,如何从网页中获取数据,然后如何更改字段?

firefox firefox-addon firefox-addon-sdk

3
推荐指数
1
解决办法
271
查看次数

导出MSVS 2013中的函数在C/C++ DLL中供Mozilla js-ctypes使用

我试图通过FireFox的js-ctypes从MSVS 2013 C/C++ DLL访问一些导出的函数.我试过了 :

这是我的DLL代码:

#define DllExport extern "C" __declspec(dllexport)

DllExport void Test()
{
    ::MessageBox(NULL, _T("Test!"), _T("Title"), MB_OK);
}
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,似乎我总是得到这个错误:

 console.error: myxpi:
   Message: Error: couldn't find function symbol in library
   Stack:
     openScratchpad@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///c:/users/kgk/appdata/local/temp/tmpdyrqfd.mozrunner/
 extensions/jid1-QEiY1nT1Uinqug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-qeiy1nt1uinqug-at-jetpack/myxpi/lib/main.js:34:18
 button<.onClick@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///c:/users/kgk/appdata/local/temp/tmpdyrqfd.mozrunner/extensions/jid1-QEiY1nT1Uinqug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-qeiy1nt1uinqug-at-jetpack/myxpi/lib/main.js:16:9
Run Code Online (Sandbox Code Playgroud)

有谁知道什么是正确的设置?

FF是32位(据我所知)但我不知道它是否使用像python这样的东西来加载DLL.

我认为只要导出函数使用了适当的声明(例如__cdecl),"编译为"就无关紧要了.

我不确定这会产生什么(但我的项目设置是为了__cdecl):

#define DllExport extern "C" __declspec(dllexport)
Run Code Online (Sandbox Code Playgroud)

但我也尝试过更换它并使用DEF文件......

知道为什么似乎什么都没有?

相关问题:

在Visual Studio中制作适合由Mozilla中的js-ctypes使用的C DLL

构建一个由Mozilla …

dll firefox-addon jsctypes firefox-addon-sdk

3
推荐指数
1
解决办法
415
查看次数