javascript - 为什么我的简单 Firefox 扩展现在拒绝运行?

标签 javascript firefox firefox-addon

问这样一个基本问题让我很痛苦,但我束手无策。

情况

  • 我正在使用运行 Firefox 34.0.5 的 32 位 Windows 7 计算机。

  • 我在目录 C:\Projects\CloudGem\plugin 中有一个简单的 Firefox 扩展。
    文件结构如下:

    CloudGem directory structure

  • 除了一些 FF 开发人员插件外,所有其他插件都被禁用。

  • 所有文件均已确认为 UTF-8 编码。

文件内容

cloudgem.js 的两个实例的内容是:

window.addEventListener( "load", function() {
    setInterval( function() {
        console.log( "Cloudgem service started (2)." );
    }, 2000 );
}, false );

console.log( "Cloudgem service started (1)." );

cloudgem.xul的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE overlay>

<overlay id="cgem-scriptmount" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script type="application/x-javascript" src="cloudgem.js" />
</overlay>

chrome.manifest 的内容是:

# Content definitions.

content      cloudgem      chrome/content/


# Overlays.

overlay chrome://browser/content/browser.xul chrome://cloudgem/content/cloudgem.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>cloudgem@cloudgem.net</em:id>
        <em:version>1.0</em:version>
        <em:type>2</em:type>

        <!-- Target application this extension can install into, with minimum and maximum supported versions. -->
        <em:targetApplication>
            <Description>
                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                <em:minVersion>1.5</em:minVersion>
                <em:maxVersion>34.0.*</em:maxVersion>
            </Description>
        </em:targetApplication>

        <!-- Front end metadata. -->
        <em:name>CloudGem</em:name>
        <em:description>A description of GloudGem.</em:description>
        <em:creator>Me</em:creator>
        <em:homepageURL>http://cloudgem.net/</em:homepageURL>
    </Description>
</RDF>

cloudgem@cloudgem.net的内容是:

C:\Projects\CloudGem\plugin\

此文件的副本存在于我的 Firefox 开发人员配置文件的 extensions 文件夹中。

发生了什么

  • Firefox 加载扩展似乎没有问题。它出现在事件插件列表中。所有元数据都是正确的。

  • 在地址栏中运行 chrome://cloudgem/content/cloudgem.xul 会按预期运行脚本,并在控制台上生成消息。

  • 大约一个月前,我创建了另一个具有几乎相同结构的扩展。它加载并按预期执行脚本。

  • 现在的问题是代码不会运行。>____< Firefox 启动时,它什么都不做。没有错误。控制台上没有消息。它就像只笨狐狸一样坐在那里,不运行我的代码。此外,我之前在一个月前运行的扩展也莫名其妙地在启动时停止运行。

我已经尝试过的

  • 创建一个全新的开发者配置文件并在那里安装插件。相同的结果。

  • 将控制台输出调用更改为 dump() 调用、抛出异常、更改窗口标题等。相同的结果。

  • 更改文件的名称。相同的结果。

  • 迁移到另一台机器(这次运行的是 Windows XP)。相同的结果。

  • 复制 components 文件夹中的 cloudgem.js 代码,并在 XUL 覆盖层中将其作为脚本运行。这是一个 hack,以响应 FF 没有运行 components 文件夹中的代码这一事实。代码的两个实例都不会运行。

正如我所说,我完全没有想法。我不知道为什么它没有在浏览器启动时运行。从现在到一个月前代码运行时,我的系统唯一的变化是对我的操作系统、Firefox 和病毒检查程序进行了一些例行更新。禁用我的病毒检查器 (Avast) 的“web 屏蔽”并不能解决问题,病毒检查器也没有发出任何关于插件的可辨别的噪音。

谁能提出解决方案?我翻遍了 MDN 文章,但一无所获。

非常感谢。

最佳答案

我认为您可能看错了控制台。加载项向浏览器控制台输出信息。更普遍的问题是如何在浏览器控制台上查看输出。

不是很明显,但是你可以按照这两个步骤来做。

1) 在地址栏输入about:config,找到loop.debug.loglevel,将值改为all确保记录所有输出。

Step1

您可能需要重新启动浏览器。

2) 通过 Ctrl+Shift+j 或 Hamburger Menu -> Developer -> Browser Console 打开浏览器控制台。

Developer Console

消息应该打印在那里。

Messages

关于javascript - 为什么我的简单 Firefox 扩展现在拒绝运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27928671/

相关文章:

javascript - Selenium 网络驱动程序(火狐): dynamically disable Javascript

javascript - Firefox 为浏览器错误添加监听器

javascript - 从 youtube 视频生成音频波形

javascript - react 生命周期与 react Hook useEffect

javascript - 在 Yosemite 上使用 JavaScript for Automation 列出文件夹中的所有文件

javascript - Angularjs Binding 2指令范围模型到父 Controller 模型

javascript - Firefox setTimeout(func, ms) 发送默认参数给回调

javascript - Firefox 扩展中的 __defineGetter__ 未定义

firefox-addon - 是否可以在 Firefox 附加组件中使用第三方 js 库,例如下划线?

javascript - Firefox 侧边栏扩展链接加载到新的浏览器选项卡中。如何?