JavaScript:Ci未定义

JavaScript:Ci未定义,javascript,firefox,continuous-integration,Javascript,Firefox,Continuous Integration,我刚刚花了半个月的时间来找出导致JavaScript代码中出现错误消息“Ci未定义”的原因。我终于找到了原因: 它应该是(jQuery): 它是: ("asd").bla(); (美元符号不见了) 现在,在解决了这个问题之后,我想了解消息本身:当Firefox告诉我“Ci”没有定义时,它意味着什么。什么是“Ci” 更新: 我使用的是当前版本的Firefox(3.0.3) 要复制,只需使用以下HTML代码: <html><head><title>test&l

我刚刚花了半个月的时间来找出导致JavaScript代码中出现错误消息“Ci未定义”的原因。我终于找到了原因:

它应该是(jQuery):

它是:

("asd").bla();
(美元符号不见了)

现在,在解决了这个问题之后,我想了解消息本身:当Firefox告诉我“Ci”没有定义时,它意味着什么。什么是“Ci”


更新: 我使用的是当前版本的Firefox(3.0.3)

要复制,只需使用以下HTML代码:

<html><head><title>test</title>
<script>
("asd").bla();
</script>
</head><body></body></html>
测试
(“asd”).bla();

为了说明这一点:我知道是什么导致了错误消息。我只想知道Firefox试图用“Ci”告诉我什么…

假设它是CodeIngiter,它找不到js文件。

我不知道您使用的是哪个版本的FF,但不管怎样,消息可能是指
bla()
不是String对象上可用的函数。由于您缺少
$
,这意味着您缺少一个函数,
(“asd”)
将计算为一个字符串,然后JavaScript解释器将尝试调用该对象上的
bla()
。因此,如果您的项目中有以下代码:

String.prototype.bla = function() {};

// now this next line will execute without any problems:
("asd").bla();
因此,
Ci
可能是一些内部Firefox符号,它只是指函数的概念。这是我的猜测,我想你需要一个了解Firefox内部结构的人来更好地回答这个问题


更新:我正在使用与您完全相同的FF版本运行您的示例代码,但它报告错误为:

错误:“asd”。bla不是一个函数
源文件:file:///C:/test.html
线路:3


也许您正在运行一个扩展/插件来处理这个问题?也许是一些油腻的手稿什么的?

杰森似乎是对的。许多插件(如Firebug、Geode)使用Ci作为快捷方式:

const Ci = Components.interfaces; 

因此插件似乎会导致奇怪的错误消息。

Plugin:可能是。。。Greasemonkey:它不应该在主机上做任何事情。。。但谁知道……;)你似乎是对的。Ci在相当多的插件中被用作“Components.Interface”的快捷方式。
const Ci = Components.interfaces;