Firefox扩展不起作用 [英] Firefox extension not working

查看:112
本文介绍了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>

    <! - Mozilla Firefox - >
    < 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

    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扩展不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆