Я потратил половину нашего, чтобы выяснить, что вызвало сообщение об ошибке «Ci не определен» в моем коде JavaScript. Я наконец нашел причину:
Должно быть (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" ...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предполагая, что это CodeIgniter, он не может найти файл 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 точный, что и вы, но он сообщает об ошибке как:
Error: "asd".bla is not a function
Source File: file:///C:/test.html
Line: 3
Возможно, у вас работает расширение / подключаемый модуль, который что-то с этим делает? Может быть, скрипт Greasemonkey или что-то в этом роде?
Кажется, ты прав. Ci используется во многих плагинах как ярлык для «Components.interfaces».
Кажется, Джейсон прав. Многие плагины (например, Firebug, Geode) используют Ci как ярлык:
const Ci = Components.interfaces;
Таким образом, кажется, что плагины вызывают это странное сообщение об ошибке.
Плагин: Может быть ... Greasemonkey: Он не должен ничего делать на этом хосте ... Но кто знает ...;)