4

IE8 がスクリプト タグの外側で JavaScript エラーを報告している (またはそう主張している) という奇妙な問題が発生しており、ページ上のそれ以降のすべての JS が壊れています。問題のあるコードは次のとおりです。

<script type="text/javascript">//<![CDATA[
    function emailReport() {
        var params = window.location.search;
        var url = "scripts/someScript.php" + params;
        ajaxwl(url, false, null, function() {
            alert("Report successfully sent.");
        });
    }
//]]></script>
<h2>Analyst Report</h2>

ajaxwl() は jQuery.ajax() の単なるラッパーであり、サイト全体の何百もの場所で問題なく使用されています。

</script>IE は、タグのある行の 23 文字目に構文エラーがあると主張しています (どのタイプかは詳しく説明されていません) 。この行は 15 文字しかないため、これは特に奇妙です。ただし、IE8 開発者ツールで想定される場所を調べると、実際に<h2>は次の行のタグの途中にエラーが表示されます。

公式の IE エラー メッセージは次のとおりです。

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.1; MS-RTC LM 8)
Timestamp: Tue, 12 Jun 2012 21:19:38 UTC


Message: Syntax error
Line: 175
Char: 23
Code: 0

IE が実際のエラー メッセージを表示しないことを考えると、これまでオンラインでこれに関する情報を見つけることができませんでした。JSLint も何の役にも立たず、Chrome と FF で問題なく動作します。明らかな何かが欠けていますか?


編集: IE が上記のコード スニペットでエラーを報告しているにもかかわらず、実際には別の場所で死んでいるというのが私の推測です。それがコンセンサスのようです。ページを精査して、運が良ければエラーを見つけることができると思います。

4

2 に答える 2

3

IEは、エラーが発生したファイルを指定しない、または正しく指定しないことで有名です。IEデバッガーで実行してみて、エラーが別のファイルの175行目にまったくないかどうかを確認してください。

EDIT Debuggerが機能しなかったため、これを難しい方法で行う必要があります。ページをディスクに保存します。すべてのJavascriptファイルを1つの大きなファイルに連結します。それ以外の場合は空白のページからそのファイルを含めます。これで行番号は異なりますが、持っている唯一のJSファイルでは正確です。

私の予測:ターミナルコンマ。次のコード行は、Javascriptでは有効ですが、IE「JScript」では有効ではありません。

 var x = [ 0, ];

「スティーブ・ジョブズは死んでいて、ビル・ゲイツは神がいないので生きています。しかし、100年後、ジョブズはエジソンとイーライ・ホイットニーと一緒に記憶され、ゲイツは正義があるので忘れられます。」

于 2012-06-12T21:55:05.160 に答える
2

IE 8.0.7601を実行しているWindowsボックスを起動したところ、このコードで構文の問題は報告されていません。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
   <title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
 </head>
 <body>
   <div>

<script type="text/javascript">//<![CDATA[
    function emailReport() {
        var params = window.location.search;
        var url = "scripts/someScript.php" + params;
        ajaxwl(url, false, null, function() {
            alert("Report successfully sent.");
        });
    }
//]]></script>
<h2>Analyst Report</h2>


   </div>
 </body>
</html>
于 2012-06-12T21:49:51.240 に答える