主要问题是我的扩展程序正在加载到目标网页上的每个iframe中.它还会将按钮显示在iframe中.我希望他们消失.窗口和文档对象显示为父窗口和文档对象.因此,例如因为它显示父级的位置而不是iframe的位置,所以无法检查文档位置.
我过去曾从事过Mozilla附加开发(初学者级别).但在遇到XPCOM时,我真的很害怕,把它留在中间.
最近我才遇到Add-on SDK并发现它非常酷,看到之前几个月的工作与SDK的工作时间不超过2天真的很吸引人.现在我再次陷入XPCOM模块.
现在我真的想利用XPCOM的强大功能但是至少需要一周时间才能在SDK环境中熟悉XPCOM.我需要什么代码才能获得我想要的功能?
对于每个用户会话,我想记录一些东西.我能够区分会话.我现在想的是建立在用户的计算机文件,从附加打开它,并写些东西到它的代码.
用于访问书签和下载并阅读它们的代码.
如果我不得不从SDK切换回来,那将是一个令人心碎的时刻.
我正在使用Add-on SDK开发Firefox附加组件.我更改了我的package.json文件,以包含32x32图标和64x64图标的条目.
{
...
"icon": "icons/icon-32.png",
"icon64": "icons/icon-64.png",
...
}
Run Code Online (Sandbox Code Playgroud)
此外,我在icons包目录cfx xpi内运行之前将icon-32.png和icon-64.png 放在我的包目录中的目录中.
图标正确地显示在插件管理器中Tools > Add-ons,但安装对话框仍然使用拼图图标.
我自己托管Firefox附加组件.
起初,我认为可能是因为我还没有签署xpi文件,但我注意到还有很多其他的附加组件没有签名但在安装对话框中仍然有正确的图标.
我也认为这可能是因为图标不是位于xpi文件中的正确位置,或者可能是附加SDK没有正确生成install.rdf,但我解压缩了xpi并发现了cfx已将图标放在根目录中并将其重命名为默认名称(icon.png和icon64.png),并省略了install.rdf中的文件名(将它们指向默认图标).
如何更改安装图标?
使用Firefox托管时是否只能更改安装图标?
我正在开发Firefox扩展,我需要从内容脚本中将JavaScript注入页面.在我的Chrome扩展程序中,我完成了以下操作:
this.initializeJplayerSupport = function() {
var script = document.createElement('script');
script.setAttribute('type', 'application/javascript');
script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js'));
document.head.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)
该文件位于我的数据目录中.如何在firefox扩展内容脚本(我用于chrome.extension.getURL()Chrome)中引用js文件?
我目前正在使用附加SDK开发Firefox扩展,并遇到了一个真正的问题.基本上我的扩展只是将内容脚本注入到这样的网页中:
main.js
var pageMod = require("page-mod");
var self = require("self");
pageMod.PageMod({
include: "http://mail.google.com/mail/*",
contentScriptFile: [self.data.url("jquery.js"),
self.data.url("start.js")],
attachTo : ["top"]
});
Run Code Online (Sandbox Code Playgroud)
start.js
$('body').append('<div>1</div><img src="insertnote.png" /><div>2</div>');
Run Code Online (Sandbox Code Playgroud)
双方start.js并insertnote.png都位于数据文件夹中.除了图像,一切都有效.我只是找不到如何获取图像标记的真实网址.相对网址似乎不起作用.:(
是否可以在内容脚本中包含插件的内部图像,或者我应该只使用绝对网址到我的网络服务器?
我正在为Firefox开发一个附加组件,我现在希望本地化附加组件本身的名称和描述,这在Add-ons Manager菜单中对用户可见.
但是,我在网上看到的指南似乎只提到了package.json中的首选项,而没有提及附加组件的名称或其描述.我试图将偏好建议应用于名称/描述字段,但没有取得任何成功 - 它总是以英文显示.
这些领域的本地化是否可能?
我正在使用Firefox Add-on SDK开发Firefox附加组件.该加载项将是特定于站点的,它将根据用户首选项隐藏某些元素.
几年前我已经制作了这个附加组件,但是使用新的SDK会有所不同.
因为附加组件是特定于站点的,我需要修改站点的内容,所以我使用" PageMod "模块
[ main.js ]
pageMod.PageMod({
include: "*.ipvisie.com",
contentScriptFile: [
data.url('jquery-1.11.1.min.js'),
data.url('script.js')
]
});
Run Code Online (Sandbox Code Playgroud)
这很好用,实现了jQuery,我可以从script.js添加和运行javascript
我在' package.json '中声明了首选项,这很有效.我可以从' main.js ' 访问它
我的问题是ContentScript无法访问用户首选项.
如何在ContentScript的script.js中访问当前首选项?
尝试1
我尝试的第一件事就是从ContentScript请求首选项
if (require('sdk/simple-prefs').prefs['somePreference'] == true) {
alert('Pref checked');
}
Run Code Online (Sandbox Code Playgroud)
尝试2
我在文档中读到可以使用ContentScript发送一些只读参数.这似乎有效,但当我改变我的偏好时,价值已经设定.只有我重新启动浏览器才会传递正确的设置.
contentScriptOptions: {
advertLink: require('sdk/simple-prefs').prefs['advertTop'],
advertDay: require('sdk/simple-prefs').prefs['advertDay'],
advertAdmart: require('sdk/simple-prefs').prefs['advertAdmart'],
advertLink: require('sdk/simple-prefs').prefs['advertLink']
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试连接到我的AWS unix机器上安装了FF版本26.0的selenium 2.30,但当我启动访问selenium的客户端时,我收到以下错误.
此外,当我尝试与selenium独立jar 2.38.0相同时,它工作正常,但在一两天的一段时间后突然发生,它开始给出2.38.0以下的错误.不知道为什么会这样?任何的想法??
项目是我有一个多线程应用程序,其中客户端持续执行一些线程,ping一些URL和所有,它继续发生,除非发生如下的一些问题.
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified
Error: no display specified
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.4.76-65.111.amzn1.x86_64', java.version: '1.7.0_51'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:197)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
Run Code Online (Sandbox Code Playgroud) java firefox selenium-grid firefox-addon-sdk selenium-webdriver
我正在寻找firefox addon api来截取文档的可见区域.
Chrome和Safari都有实现此目的的api.它们非常快.我找不到任何针对firefox的内容.
我找到了一个解决方法,如何在使用addon sdk创建的插件中使用canvas drawWindow函数?但是这个解决方案采用包含滚动的整页截图(包括文档的隐藏部分).这个解决方案有两个问题;
1-如果页面有长滚动,则需要很长时间才能完成屏幕截图过程.因为它使用的是基于画布的绘图.
2-我想得到文件可见区域的截图,而不是整个文件.
这有什么解决方法吗?
谢谢.
我正在尝试创建一个Firefox插件(使用插件SDK)来修改页面的显示方式,主要是作为培训/学习练习.
对于某些任务(如增加具有新功能的页面)使用pageMod完全没问题.页面加载,我运行一些JS来显示/隐藏/添加元素.
我的问题是:我可以在页面开始显示之前对DOM执行修改(所以:服务器返回的HTML文档)吗?
例如:从服务器返回的页面是:
<html>
<body>
<table>
<tr>
<td>Item 1.1</td>
<td>Item 1.2</td>
<td>Item 1.3</td>
</tr>
<tr>
<td>Item 2.1</td>
<td>Item 2.2</td>
<td>Item 2.3</td>
</tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但我希望FF代替:
<html>
<body>
<ul>
<li>Item 1.1, Item 1.2, Item 1.3</li>
<li>Item 2.1, Item 2.2, Item 2.3</li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在页面加载后执行此操作将首先显示表格,然后它将快速"闪烁"到列表中.它可能足够快,但如果我要更改<img>标签<a>,例如防止(不想要)图像加载,这是不够的.
我正在寻找contentScriptWhen: "start"在pageMod 中使用并尝试附加监听器,但我无法看到我如何实时修改DOM'(或事件阻止在加载所有页面之前显示任何类型的页面).
我已经检查了cloud-to-butt扩展,因为它确实修改了页面,但我甚至无法让它工作:当作为pageMod附加start代码失败时:
document.getElementById('appcontent').addEventListener('DOMContentLoaded', function(e)
Run Code Online (Sandbox Code Playgroud)
因为document.getElementById('appcontent')返回null.
我非常感谢一些指示:是否可能,如何附加脚本,如何拦截HTML并在经过一些修改后将其发送回去.
编辑:好的,所以我认为我能够拦截数据:
let { Ci,Cr,CC } = require('chrome');
let { on } = …Run Code Online (Sandbox Code Playgroud) firefox ×5
javascript ×5
canvas ×1
java ×1
json ×1
localization ×1
mozilla ×1
screenshot ×1
xpcom ×1