【发布时间】:2015-06-09 21:53:11
【问题描述】:
我正在开发一个 Firefox 插件。当我运行它时,我打开浏览器控制台并显示AMO_Uedit_Beta_Firefox is not defined :browser.xul。
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://Uedit/skin/skin.css" type="text/css"?>
<!DOCTYPE Uedit SYSTEM "chrome://Uedit/locale/translations.dtd">
<overlay id="Uedit-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="Uedit.js" />
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="Uedit" class="toolbarbutton-1" label="Edit HTML" tooltiptext="Edit HTML" oncommand="AMO_Uedit_Beta_Firefox.Uedit()" />
</toolbarpalette>
</overlay>
调用作为对象一部分的函数的工具栏按钮 (AMO_Uedit_Beta_Firefox)。
我仔细检查了名称,它们都匹配。是因为脚本没有正确加载吗?我确定不是变量名不能以大写字母开头。
var AMO_Uedit_Beta_Firefox={ // This is for "wrapping the loose variables."
两个文件的引用完全相同。难道是因为脚本根本没有加载?
<toolbarbutton id="Uedit" class="toolbarbutton-1" label="Edit HTML" tooltiptext="Edit HTML" oncommand="AMO_Uedit_Beta_Firefox.Uedit()" />
我尝试在 browser.xul 中将相对 URL (<script src="Uedit.js" />) 更改为绝对 URL (<script src="chrome://Uedit/Uedit.js" />),但现在它只返回空白错误消息。
奇怪的空白错误消息。
这些错误导致插件的其余部分根本无法工作,所以在修复之前我无法继续开发它。有哪些可能的解决方案?
编辑:
我想出了一个解决方案。我必须在第一条语句之前放一行 JavaScript。
var AMO_Uedit_Beta_Firefox = { // Will not work!
...
例如,如果我在前面放一个console.log。
console.log("");
var AMO_Uedit_Beta_Firefox = { // This will work!
...
唯一的问题是,为什么会这样?
【问题讨论】:
-
请不要使用屏幕截图来包含源代码和错误消息。此类内容应以具有适当格式的文本形式包含在问题中。这样做允许人们搜索此类内容并剪切和粘贴信息以进行测试和创建答案。
-
没有代码,这个问题可能跑题了:寻求调试帮助的问题(“为什么这段代码不能按我想要的方式工作?”)必须包括:A ) 期望的行为; B) 一个特定的问题或错误和 C) 重现它所需的最短代码所有在问题本身 .没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example、What topics can I ask about here? 和 How to Ask。
-
您的问题没有得到很多回复,不是因为我们没有兴趣帮助您,而是因为您让我们很难做到。您没有提供足够的信息。我们需要知道什么类型的附加组件(即覆盖、无需重启、附加 SDK)。至少,我们需要能够调试的源代码。由于您提供的信息非常少(不完整!)(以非常不方便的格式,屏幕截图),我们必须通灵才能给您体面的答案。
标签: javascript debugging firefox firefox-addon xul