我正在编写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) 如何在Firefox上添加一个图标,点击导航栏上的打开面板.一个例子是Firebug扩展.唯一不同的是,我想要一个面板出现.
Firebug Icon http://i41.tinypic.com/qxuot1.png
谢谢!
我正在写一个Firefox附加组件.我的老板想要一个许可协议弹出(知道,它正在工作),用户可以接受或拒绝.我希望Decline按钮卸载Add-on.附加SDK 1.6.1附加组件可以自行卸载吗?
提前致谢.
我一直在研究与页面模块进行通信的上下文菜单,并遇到问题.
只要我不刷新页面,我就可以通过右键单击发送到页面/选项卡的通信.刷新页面时,将创建一个新工作程序,并且上下文菜单无法与工作程序通信.
我现在有两个相同的工人,但就像旧工人已过期一样.这意味着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)
这解决了问题(暂时),虽然我不认为这是正确的方法.解决方案的任何进展:).
我正在使用附加的sdk构建一个firefox附加组件.我需要向某个页面发出http请求,我想处理连接超时但在api中找不到任何内容:https://addons.mozilla.org/en-US/developers/docs/sdk/latest /modules/sdk/request.html
我实际看的是在客户端无法连接到服务器的情况下进行回调.
有没有办法实现这个目标?
我正在尝试使用他们的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) 我正在尝试开发一个mozilla扩展.我只需要在弹出窗口中显示iframe,但不知道如何执行此操作.
我的要求是
我没有找到任何类似的教程.请帮我.
谢谢...
Hariprasad
我有一个Firefox扩展,需要检查onUnload事件.基本上我想在用户禁用扩展时向我的服务器发送消息.
我尝试做的是向我的一个内容脚本发送一条消息,然后调用XMLHttpRequest.这为扩展触发任何其他事件工作正常,但它会出现内容脚本得到卸载的消息,甚至获得通过之前.
以下是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扩展.想法是在页面上读取此变量.
在使用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中获取变量时,尽管显示了警报,但它仍未定义.
如何确保内容脚本写入的值在页面上可用?
有人可以解释在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)
我明白了
错误:未定义端口.