58

Firefox 拡張機能で読み取られて実行される JavaScript スクリプトをデバッグしようとしています。Firebug コンソールを介してのみエラーを確認でき (私のコードは Firebug には表示されません)、「終了していない文字列リテラル」が報告されています。

行とその周りの行を確認したところ、括弧、中括弧、引用符のバランスが取れているなど、すべてがうまくいっているようです。他に考えられる原因は何ですか?

4

19 に答える 19

72

ほとんどのブラウザーでは、次のようなコードで問題が発生するようです。

var foo = "</script>";

Firefox、Opera、および IE8 では、これにより、未終了の文字列リテラル エラーが発生します。スクリプトを含む html コードをシリアライズするときはかなり面倒です。

于 2009-09-03T12:32:02.890 に答える
59

改行を探してください!これらが原因であることが多いです。

于 2008-12-23T07:39:52.373 に答える
26

「評判」があれば、jamtodayの回答に投票します

あなたのデータがPHP経由で来ている場合、これは役立つかもしれません

$str = str_replace(array("\r", "\n"), '', $str);
于 2011-05-07T02:59:23.470 に答える
21

"<\/script>"と同様に機能するように見えることを発見しました"</scr"+"ipt>"

于 2011-09-14T18:02:08.490 に答える
12

タグクロージャをエスケープするか、ASCIIコードを使用するだけです

すなわち

<\/script>

すなわち

<&#47;script>
于 2011-12-30T21:51:44.373 に答える
8

JSLintを介してスクリプトを実行してみてください。

于 2008-10-22T21:30:35.797 に答える
5

サーバー側のコードによって挿入される可能性がある、エスケープされていない単一の qoute を含む文字列を探します。

于 2008-10-22T21:13:08.657 に答える
4

カット/ペーストを実行した場合:一部のオンライン構文ハイライターは、一重引用符と二重引用符をマングルし、フォーマットされた引用符のペア(開始と終了のペアが一致)に変換します。(現在、例が見つかりません)...コマンド-+を数回押して、引用文字を凝視する必要があります

別のフォントを試してみませんか? また、さまざまなエディターとIDEがさまざまなトークナイザーとハイライトルールを使用します。JSは解析する動的言語の1つなので、ファイルをemacs、vim、gedit(JSプラグインを使用)で開いてみてください...運が良ければ、ファイルの終わりまで続く長い紫色の文字列が表示されます。

于 2008-10-23T16:01:01.330 に答える
2

スラッシュ(/)をエスケープしましたか?私は前にそれらと問題を抱えていました

于 2008-12-23T10:34:26.293 に答える
2

過去に、通常は Word からのコピー アンド ペーストで、斜めの引用符 ( ' ) に問題がありました。それらを通常の一重引用符 ( ' ) に置き換えるとうまくいきます。

于 2010-05-27T16:57:22.773 に答える
2

何も役に立たない場合は、次のようなユニコード文字を探します

\u2028

これにより、文字列が複数の行で壊れ、このエラーがスローされる可能性があります

于 2012-03-13T16:34:47.013 に答える
2

おそらく、PHP コードに改行があるためです。アラート ウィンドウ メッセージに改行が必要な場合は、PHP コードの各行の末尾にエスケープ構文として含めます。私は通常、次の方法でそれを行います。

$message = 'line 1.\\n';
$message .= 'line 2.';
于 2010-12-02T12:13:03.197 に答える
2

また、%0A はエンコードされた改行文字の URL であることに注意してください。問題のあるコードのどこに改行があるかを見つけるのにしばらく時間がかかりました。

于 2011-07-08T12:52:38.610 に答える
1

Chromebugを試しましたか? 拡張機能の Firebug です。

于 2010-03-31T14:33:18.997 に答える
0

エラー メッセージに示されている行番号の前にあるコードをスキャンします。終了していないものは何でも、下流の何か (非難された行番号) にフラグが立てられます。

于 2008-10-23T16:32:19.923 に答える
0

「二分探索」を試してみてください。コードの半分を削除して、もう一度やり直してください。それでもエラーが発生する場合は、残りのコードの半分を削除します。エラーがない場合は、削除したものを元に戻し、その半分を削除します。繰り返す。

かなり迅速に数行に絞り込めるはずです。私の経験では、この時点で、愚かな不正な文字列に気付くでしょう。

エラーが発生しているサーバー側のリソースがわからない場合は、ブラウザーに保存されたバージョンの HTML 出力に対してこれを実行すると便利な場合があります。

于 2008-10-23T01:03:21.220 に答える
0

Web ページの開発者は、閲覧者のブラウザで使用されているエンコーディングについて間違った推測をしました。これは通常、ページのヘッダーにエンコーディングを指定することで解決できます。

于 2008-10-23T01:26:10.347 に答える
0

空白は私が見つけた別の問題であり、このエラーを引き起こします。関数を使用して空白をトリミングすると役立つ場合があります。

于 2010-03-31T14:05:50.650 に答える
-2
str = str_replace(array("\r\n","\n\r","\r", "\n"), '<br />', stripslashes($str));

これはうまくいくはずです。

于 2012-12-19T07:39:36.357 に答える