Javascript 为什么我的简单Firefox扩展现在拒绝运行?
问这样一个基本的问题让我很痛苦,但我已经束手无策了 处境Javascript 为什么我的简单Firefox扩展现在拒绝运行?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,问这样一个基本的问题让我很痛苦,但我已经束手无策了 处境 我在一台32位Windows7机器上工作,运行Firefox34.0.5 我在目录C:\Projects\CloudGem\plugin中有一个普通的Firefox扩展名文件结构如下: 除某些FF开发者插件外,所有其他插件都被禁用 所有文件都已确认为UTF-8编码 文件内容 cloudgem.js的两个实例的内容如下: window.addEventListener( "load", function()
- 我在一台32位Windows7机器上工作,运行Firefox34.0.5
- 我在目录
中有一个普通的Firefox扩展名C:\Projects\CloudGem\plugin
文件结构如下: - 除某些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)." );
<?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>
# Content definitions.
content cloudgem chrome/content/
# Overlays.
overlay chrome://browser/content/browser.xul chrome://cloudgem/content/cloudgem.xul
<?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>
C:\Projects\CloudGem\plugin\
cloudgem.xul
的内容包括:
window.addEventListener( "load", function() {
setInterval( function() {
console.log( "Cloudgem service started (2)." );
}, 2000 );
}, false );
console.log( "Cloudgem service started (1)." );
<?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>
# Content definitions.
content cloudgem chrome/content/
# Overlays.
overlay chrome://browser/content/browser.xul chrome://cloudgem/content/cloudgem.xul
<?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>
C:\Projects\CloudGem\plugin\
install.rdf
的内容包括:
window.addEventListener( "load", function() {
setInterval( function() {
console.log( "Cloudgem service started (2)." );
}, 2000 );
}, false );
console.log( "Cloudgem service started (1)." );
<?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>
# Content definitions.
content cloudgem chrome/content/
# Overlays.
overlay chrome://browser/content/browser.xul chrome://cloudgem/content/cloudgem.xul
<?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>
C:\Projects\CloudGem\plugin\
此文件的副本存在于我的Firefox开发者档案的extensions
文件夹中
发生了什么
- Firefox似乎没有问题地加载扩展。它出现在活动插件列表中。所有元数据都是正确的
- 正在运行
在地址栏中按预期运行脚本,在控制台上生成消息chrome://cloudgem/content/cloudgem.xul
- 大约一个月前,我创建了另一个结构几乎相同的扩展。它已加载,脚本按预期执行
- 现在的问题是,代码将无法运行。\uuuuuuuuxfirefox启动时,它绝对不会执行任何操作。没有错误。控制台上没有消息。它就像一只笨狐狸一样坐在那里,不运行我的代码。此外,我之前的扩展在一个月前就开始工作了,但在启动时也莫名其妙地停止了运行
- 创建一个全新的开发者档案并在那里安装插件。同样的结果
- 将控制台输出调用更改为
调用、引发异常、更改窗口标题等。结果相同dump()
- 更改文件名。同样的结果
- 迁移到其他计算机(这次运行的是Windows XP)。同样的结果
- 复制
文件夹中的components
代码,并将其作为脚本在XUL覆盖中运行。这是针对FF没有运行cloudgem.js
文件夹中的代码这一事实的黑客攻击。这两个代码实例都不会运行components
非常感谢。我想您可能看错了控制台。加载项将信息输出到浏览器控制台。更一般的问题是如何在浏览器控制台上查看输出 这不是很明显,但是你可以按照以下两个步骤来做 1) 在位置栏中键入
about:config
,并查找loop.debug.loglevel
,将值更改为all
,以确保所有输出都已记录
您可能需要重新启动浏览器
2) 通过Ctrl+Shift+j或汉堡菜单->开发者->浏览器控制台打开浏览器控制台
信息应该打印在那里
文件名中的
@
cloudgem@cloudgem.net是坏的,我很确定,所以一定要删除它。让我知道这是否解决了问题,如果不是,我会读更多。创建问题做得很好。:)还有github吗?你能把它上传成一个回购协议吗?它能帮助我向你展示我在调试中尝试过的东西吗it@Noitidart:谢谢你的帮助。我已将所有文件上载到。Windows对文件名中的@
没有问题。它可能只是一个Unix/Linux的东西。关于创建FF扩展的MDN文章实际上建议projectname@yourdomain.whatever作为插件的唯一ID。我使用的一些其他插件(如Fibug)也使用这个约定。我会在一些重要工作的中间看一看。他们建议将其作为ID,而不是文件名。我猜它并没有解决它,是吧?@Noitidart:我会试试,让你知道的如果我在几分钟内没有回复,那就假设它不起作用。@lpiepiora:浏览器控制台与检查窗口中的调试控制台完全不同,这一点也不明显。信息出现在前者中,但不出现在后者中。我想Mozilla在他们的设计中把狗搞砸了。但至少我现在可以得到一些合理的产出。