3

JavaScript コードで "Ci が定義されていません" というエラー メッセージが表示される原因を突き止めるために、半額を費やしました。私は最終的に理由を見つけました:

それは(jQuery)である必要があります:

$("asd").bla();

そうだった:

("asd").bla();

(ドル記号がなくなった)

問題を修正した後、メッセージ自体を理解したいと思います: "Ci" が定義されていないと Firefox が言った場合、Firefox はどういう意味ですか? 「シ」とは?


更新: 現在のバージョンの Firefox (3.0.3) を使用しています。

再現するには、次の HTML コードを使用してください。

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

明確にするために: エラー メッセージの原因はわかっています。Firefox が "Ci" で何を伝えようとしているのか知りたいのですが...

4

3 に答える 3

3

使用している FF のバージョンはわかりませんが、メッセージはおそらくbla()String オブジェクトで使用できる関数ではないという事実に言及しています。が欠落していたため$、つまり関数が欠落していたため、文字列に評価され、JavaScript インタープリターがそのオブジェクト("asd")を呼び出そうとしました。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スクリプトか何か?

于 2008-11-06T17:56:19.830 に答える
2

ジェイソンは正しいようです。多くのプラグイン (例: Firebug、Geode) は Ci をショートカットとして使用します:

const Ci = Components.interfaces; 

そのため、プラグインがその奇妙なエラー メッセージを引き起こしているようです。

于 2008-11-06T18:47:01.913 に答える
-3

CodeIngiter だとすると、js ファイルが見つかりません。

于 2008-11-06T17:56:16.663 に答える