JavaScript: Ci не определен - PullRequest
       22

JavaScript: Ci не определен

3 голосов
/ 06 ноября 2008

Я потратил полчаса на то, чтобы выяснить, что вызвало сообщение об ошибке «Ci не определен» в моем коде JavaScript. Я наконец нашел причину:

Должно быть (jQuery):

$("asd").bla();

Было:

("asd").bla();

(пропал знак доллара)

Теперь, после исправления проблемы, я бы хотел понять само сообщение: что означает Firefox, когда он говорит мне, что «Ci» не определено. Что такое "Ci"?


Обновление: Я использую текущую версию Firefox (3.0.3).

Чтобы воспроизвести, просто используйте этот HTML-код:

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

Чтобы было понятно: я знаю, что вызвало сообщение об ошибке. Я просто хотел бы знать, что Firefox пытается сказать мне "Ci" ...

Ответы [ 3 ]

3 голосов
/ 06 ноября 2008

Я не знаю, какую версию 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 или что-то еще?

2 голосов
/ 06 ноября 2008

Джейсон, похоже, прав. Многие плагины (например, Firebug, Geode) используют Ci в качестве ярлыка:

const Ci = Components.interfaces; 

Таким образом, похоже, что плагины вызывают это странное сообщение об ошибке.

0 голосов
/ 06 ноября 2008

Предполагая, что это CodeIngiter, он не может найти файл js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...