标签: firefox-addon-sdk

XMLHttpRequest的替代方法?

我正在编写Firefox扩展。我正在使用与特定域匹配的内容脚本。我想从PHP页面获取数据。最终将CSS文件添加到页面以更改样式。PHP页面的内容将是我获取的CSS文件的名称。这是我的内容脚本javascript,警报什么也不返回。

有人告诉我,我受同一出身政策的限制。有什么办法可以从php页面获取数据?

function getData() {
            client = new XMLHttpRequest();
            try{
                client.open('GET','http://localhost:8888/istyla/login/popuplogin/myaccount.php');                   
            } catch (e){
                alert( "error while opening " + e.message );
            }

            client.onreadystatechange = function(){
                if (client.readyState ==4){
                        user_data = client.responseText;
                        var currenttheme = user_data;
                        alert (currenttheme);
                }
            }

            client.send(null);
}

getData();
Run Code Online (Sandbox Code Playgroud)

javascript firefox firefox-addon firefox-addon-sdk

4
推荐指数
2
解决办法
1万
查看次数

导航栏上的Firefox扩展图标,使用"加载项"构建器

如何在Firefox上添加一个图标,点击导航栏上的打开面板.一个例子是Firebug扩展.唯一不同的是,我想要一个面板出现.

Firebug Icon http://i41.tinypic.com/qxuot1.png

谢谢!

firefox firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
973
查看次数

Firefox Add-on SDK 1.6.1是否可以制作卸载按钮?

我正在写一个Firefox附加组件.我的老板想要一个许可协议弹出(知道,它正在工作),用户可以接受或拒绝.我希望Decline按钮卸载Add-on.附加SDK 1.6.1附加组件可以自行卸载吗?

提前致谢.

firefox uninstall button firefox-addon-sdk

4
推荐指数
1
解决办法
244
查看次数

Addon SDK - 上下文菜单和页面修改工作者

我一直在研究与页面模块进行通信的上下文菜单,并遇到问题.

只要我不刷新页面,我就可以通过右键单击发送到页面/选项卡的通信.刷新页面时,将创建一个新工作程序,并且上下文菜单无法与工作程序通信.

我现在有两个相同的工人,但就像旧工人已过期一样.这意味着onMessage中的这个循环:不起作用,因为它拾取了第一个worker.

for (index = 0; index < workers.length; index += 1) {
    if (workers[index].tab.index === tabs.activeTab.index) {
    workers[index].port.emit("rightClick", string, ss.storage.product);
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直在寻找删除旧工人刷新,但似乎没有选择这样做.我从根本上错过了一些关于工人处理的事情吗?

我收到的错误是:错误:页面当前是隐藏的,在再次可见之前无法再使用.

这与以下事实是一致的:就工人而言,我现在正在查看同一选项卡中的新页面.我认为worker.on('detach',function(){})应该处理这个问题但似乎这只是关闭选项卡.

任何意见,将不胜感激.

稍微休息后添加 OK我决定使用其他地方推荐的detachWorker功能进行分离.我把它放在我的pageMod对象的顶部,如下所示

// Clean up duplicate worker
for (index in workers) {
    if(workers[index].url === worker.url && workers[index].tab.index === worker.tab.index) {
        detachWorker(workers[index], workers);
    }
}
Run Code Online (Sandbox Code Playgroud)

这解决了问题(暂时),虽然我不认为这是正确的方法.解决方案的任何进展:).

javascript firefox-addon-sdk

4
推荐指数
1
解决办法
1357
查看次数

firefox addon-sdk:处理http请求超时

我正在使用附加的sdk构建一个firefox附加组件.我需要向某个页面发出http请求,我想处理连接超时但在api中找不到任何内容:https://addons.mozilla.org/en-US/developers/docs/sdk/latest /modules/sdk/request.html

我实际看的是在客户端无法连接到服务器的情况下进行回调.

有没有办法实现这个目标?

firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
815
查看次数

Firefox sdk - 内容脚本无法访问self.port

我正在尝试使用他们的sdk制作一个firefox插件,但我不知道如何使我的js脚本通信.目标是制作一个带有表格的面板,有3个复选框,选中后可以隐藏/显示活动选项卡上的某些元素.

以下是脚本:main.js:

exports.main = function() {};

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

var panel1 = require("sdk/panel").Panel({
    width: 215,
    height: 160,
    contentURL: data.url("panelDestroyer.html"),
    contentScriptFile: [data.url("jquery.js"),data.url("panel.js")]
});

require("sdk/widget").Widget({
    id: "open-form-btn",
    label: "Clear",
    contentURL: data.url("mozico.png"),
    contentScriptFile: data.url("jquery.js"),
    panel: panel1
});

var tabs = require("sdk/tabs");

var tabWorkers = {};
tabs.on("ready", function(tab) {
    attachTabWorker(tab);
});
for each (var tab in tabs) {
    attachTabWorker(tab);
}

function attachTabWorker(tab) {
    // Attach and store
    var tabWorker = tabWorkers[tab.id] = tab.attach({
        contentScriptFile: [data.url("clear.js"),data.url("jquery.js")]
    });
    // Clean up
    tabWorker.on("detach", function() {
        if …
Run Code Online (Sandbox Code Playgroud)

javascript firefox firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
2363
查看次数

创建mozilla扩展以在其中显示弹出窗口和iframe

我正在尝试开发一个mozilla扩展.我只需要在弹出窗口中显示iframe,但不知道如何执行此操作.

我的要求是

  1. 在顶部导航工具栏上添加扩展按钮
  2. 在单击扩展按钮的同时在弹出窗口中显示iframe.

我没有找到任何类似的教程.请帮我.

谢谢...

Hariprasad

firefox firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
3479
查看次数

如何在Firefox插件sdk扩展中使用main.js中的XMLHttpRequest.(或类似的东西)

我有一个Firefox扩展,需要检查onUnload事件.基本上我想在用户禁用扩展时向我的服务器发送消息.

我尝试做的是向我的一个内容脚本发送一条消息,然后调用XMLHttpRequest.这为扩展触发任何其他事件工作正常,但它会出现内容脚本得到卸载的消息,甚至获得通过之前.

main.js

以下是main.js脚本中的代码:

exports.onUnload = function(reason) {
    //unloadWorker comes from a PageMod 'onAttach: function(worker){}'
    //That is called every time a page loads, so it will a recent worker.
    if(unloadWorker != null) { 
        unloadWorker.port.emit("sendOnUnloadEvent", settings, reason);
    }
};
Run Code Online (Sandbox Code Playgroud)

内容脚本

以下是我附加到每个加载页面的内容脚本中的代码.

self.port.on("sendOnUnloadEvent", function(settings, reason) {
    console.log("sending on unload event to servers");
    settings.subid = reason;
    if(reason != "shutdown") {
        sendEvent(("on_unload"), settings);
    }
});
Run Code Online (Sandbox Code Playgroud)

发送事件代码

最后,这里是发送事件代码,仅供参考我最初计划如何使用XMLHttpRequest:

sendEvent = function(eventName, settings) {

    if (!eventName) {
        eventName = "ping"; 
    }
    //Not the actual URL, but …
Run Code Online (Sandbox Code Playgroud)

javascript firefox firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
3475
查看次数

如何在Firefox Add On On中设置javascript变量使用Add On SDK创建?

我正在尝试设置一个javascript变量来识别安装了Firefox扩展.想法是在页面上读取此变量.

在使用XUL附加组件(在Firefox扩展中设置页面窗口对象中的对象?)时使用复杂方法未能实现此功能,并在Firefox Add on SDK中找到适合该任务的contentScripts,我仍然在访问页面上的contentScript中设置的javascript变量时遇到问题.

我在main.js中有以下内容(使用此处提供的示例https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/page-mod.html):

var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: "*",
  contentScript: 'window.isInstalled=true;window.alert("Page matches ruleset");',
  contentScriptWhen: "ready"
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试window.isInstalled在页面上的javascript中获取变量时,尽管显示了警报,但它仍未定义.

如何确保内容脚本写入的值在页面上可用?

javascript firefox firefox-addon firefox-addon-sdk

4
推荐指数
1
解决办法
558
查看次数

在firefox扩展中使用port.emit和port.on

有人可以解释在firefox扩展中使用port.on和port.emit的上下文吗?

官方文档我想象这应该工作:

//main.js
var someData = "Message received"; 

self.port.emit("myMessage", someData);
self.port.on("myMessage", alert(someData));
Run Code Online (Sandbox Code Playgroud)

但我明白了

错误:未定义self.

将此附加到定义的对象后,如下所示:

var self = require("sdk/self"); 
self.port.emit("myMessage", someData);
Run Code Online (Sandbox Code Playgroud)

我明白了

错误:未定义端口.

firefox-addon-sdk

4
推荐指数
1
解决办法
1788
查看次数