JavaScript: Ci is not defined

JavaScript: Ci is not defined

本文关键字:not defined is Ci JavaScript      更新时间:2023-09-26

我刚刚花了半个小时的时间来找出JavaScript代码中错误消息"Ci未定义"的原因。我终于找到了原因:

应该是(jQuery):

$("asd").bla();

它是:

("asd").bla();

(美元符号丢失)

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


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

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

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

明确一点:我知道是什么导致了错误消息。我只是想知道Firefox试图用"Ci"告诉我什么。。。

我不知道您使用的是哪种版本的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

也许您有一个正在运行的扩展/插件可以对此做些什么?也许是Greasemonkey的剧本什么的?

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

const Ci = Components.interfaces; 

所以插件似乎导致了这个奇怪的错误消息。

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