本文介绍了Firefox扩展不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个Firefox扩展,但是我不能使用它(没有任何反应)。
有人知道为什么吗?
模块层次结构
my_firefox_extension
- chrome.manifest
- install.rdf
- chrome /
- 内容/
- locale.html
- overlay.js
- sample.xul
- 内容/
代码
chrome.manifest
内容firefox_extension chrome / content /
overlay chrome://browser/content/browser.xul chrome://firefox_extension/content/sample.xul
install.rdf
<?xml version =1.0? >
xmlns:em =http:// www.mozilla.org/2004/em-rdf#\">
<描述about =urn:mozilla:install-manifest>
< em:id> displaypages@bruno.com< / em:id>
< em:name>显示页面语言环境< / em:name>
< em:description>欢迎使用此扩展程序,当用户打开新选项卡或窗口时,显示页面区域设置< / em:description>
< em:version> 0.1< / em:version>
< em:creator> Bruno Da Silva< / em:creator>
< em:homepageURL> https://www.example.com< / em:homepageURL>
< em:type> 2< / em:type>
< em:targetApplication>
<说明>
< em:id> {ec8030f7-c20a-464f-9b0e-13a3a9e97384}< / em:id>
< em:minVersion> 3.0< / em:minVersion>
< em:maxVersion> 4.0。*< / em:maxVersion>
< /说明>
< / em:targetApplication>
< /说明>
< / RDF>
sample.xul
<?xml version =1.0?>
< overlay id =firefox_extension-browser-overlay
xmlns =http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul> ;
< script type =application / x-javascriptsrc =chrome://firefox_extension/content/overlay.js/>
< / overlay>
overlay.js
函数读取(文件)
{
var ioService = Components.classes [@ mozilla.org/network/io-service;1]
.getService .interfaces.nsIIOService);
var scriptableStream =组件
.classes [@ mozilla.org/scriptableinputstream;1]
.getService(Components.interfaces.nsIScriptableInputStream);
var channel = ioService.newChannel(file,null,null);
var input = channel.open();
scriptableStream.init(input);
var str = scriptableStream.read(input.available());
scriptableStream.close();
input.close();
return str;
gBrowser.addEventListener(DOMContentLoaded,function(e){
var documentElement = e.originalTarget.defaultView.document;
var div = documentElement。 createElement(div);
div.innerHTML = Read(chrome://firefox_extension/content/locale.html);
documentElement.body.appendChild(div);
} );
locale.html
<!DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Strict // ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >
< head>
< title>用户打开新标签或窗口时显示的页面< / title>
< meta http-equiv =Content-Typecontent =text / html; charset = iso-8859-1/>
< / head>
< body>
< p>一些文字< p>
< / body>
< / html>
解决方案
您错过了一个可能导致错误的参数:
gBrowser.addEventListener(DOMContentLoaded,function(e){
var documentElement = e.originalTarget.defaultView。 document;
var div = documentElement.createElement(div);
div.innerHTML = Read(chrome://firefox_extension/content/locale.html);
documentElement.body .appendChild(div);
},
false //在addEventListener上缺少参数
//添加它,它可能工作
);
I've created a Firefox extension but I can't use it (nothing happens). Does someone know why ?
The module hierarchy
my_firefox_extension
- chrome.manifest
- install.rdf
- chrome/
- content/
- locale.html
- overlay.js
- sample.xul
- content/
The code
chrome.manifest
content firefox_extension chrome/content/
overlay chrome://browser/content/browser.xul chrome://firefox_extension/content/sample.xul
install.rdf
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>displaypages@bruno.com</em:id>
<em:name>Display the page locale</em:name>
<em:description>Welcome to this extension that displays the page locale when a user opens a new tab or windows</em:description>
<em:version>0.1</em:version>
<em:creator>Bruno Da Silva</em:creator>
<em:homepageURL>https://www.example.com</em:homepageURL>
<em:type>2</em:type>
<!-- Mozilla Firefox -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.0</em:minVersion>
<em:maxVersion>4.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
sample.xul
<?xml version="1.0"?>
<overlay id="firefox_extension-browser-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://firefox_extension/content/overlay.js"/>
</overlay>
overlay.js
function Read(file)
{
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var scriptableStream=Components
.classes["@mozilla.org/scriptableinputstream;1"]
.getService(Components.interfaces.nsIScriptableInputStream);
var channel=ioService.newChannel(file,null,null);
var input=channel.open();
scriptableStream.init(input);
var str=scriptableStream.read(input.available());
scriptableStream.close();
input.close();
return str;
}
gBrowser.addEventListener("DOMContentLoaded", function(e) {
var documentElement = e.originalTarget.defaultView.document;
var div = documentElement.createElement("div");
div.innerHTML = Read("chrome://firefox_extension/content/locale.html");
documentElement.body.appendChild(div);
});
locale.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Page displayed when a user opens a new tab or window</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Some text<p>
</body>
</html>
解决方案
You missed one parameter which is probably causing the errors:
gBrowser.addEventListener("DOMContentLoaded", function(e) {
var documentElement = e.originalTarget.defaultView.document;
var div = documentElement.createElement("div");
div.innerHTML = Read("chrome://firefox_extension/content/locale.html");
documentElement.body.appendChild(div);
},
false // missing parameter on addEventListener
// add this and it might work
);
这篇关于Firefox扩展不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!