admin管理员组

文章数量:1399995

I'm having a strange issue where IE8 is reporting a JavaScript error outside of a script tag (or so it claims), and breaking all further JS on the page. Here is the offending code:

<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() is just a wrapper over jQuery.ajax(), and is used in hundreds of places throughout the site with no issues.

IE claims the syntax error (it doesn't elaborate as to what type) is at character 23 of the line with the </script> tag. This is especially strange since that line only has 15 characters. If I inspect the supposed location in the IE8 developer tools, however, it actually puts the error in the middle of the <h2> tag on the next line.

Here is the official IE error message:

User Agent: Mozilla/4.0 (patible; 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

Given that IE doesn't tell me an actual error message, I haven't been able to find anything about this online so far. JSLint doesn't yield anything helpful either, and it works flawlessly in Chrome and FF. Am I missing something obvious?


EDIT: My hunch is that despite IE reporting the error in the code snippet above, it's actually dying somewhere else. That seems to be the consensus. I guess I'll scour the page and see if I get lucky and find the error.

I'm having a strange issue where IE8 is reporting a JavaScript error outside of a script tag (or so it claims), and breaking all further JS on the page. Here is the offending code:

<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() is just a wrapper over jQuery.ajax(), and is used in hundreds of places throughout the site with no issues.

IE claims the syntax error (it doesn't elaborate as to what type) is at character 23 of the line with the </script> tag. This is especially strange since that line only has 15 characters. If I inspect the supposed location in the IE8 developer tools, however, it actually puts the error in the middle of the <h2> tag on the next line.

Here is the official IE error message:

User Agent: Mozilla/4.0 (patible; 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

Given that IE doesn't tell me an actual error message, I haven't been able to find anything about this online so far. JSLint doesn't yield anything helpful either, and it works flawlessly in Chrome and FF. Am I missing something obvious?


EDIT: My hunch is that despite IE reporting the error in the code snippet above, it's actually dying somewhere else. That seems to be the consensus. I guess I'll scour the page and see if I get lucky and find the error.

Share Improve this question edited Jun 12, 2012 at 22:08 user1452259 asked Jun 12, 2012 at 21:24 user1452259user1452259 411 silver badge3 bronze badges 10
  • What happens if you remove the CDATA (opening and closing tags)? – jdigital Commented Jun 12, 2012 at 21:28
  • Does it make the Ajax call? What is the URL returning? Maybe it tries to evaluate the response as JavaScript. – Felix Kling Commented Jun 12, 2012 at 21:28
  • You have an XML CDATA section, are you using an XHTML doctype? – Guffa Commented Jun 12, 2012 at 21:29
  • The doctype is XHTML 1.0 Strict. Removing the CDATA makes no difference. An AJAX call is made, but returns nothing. – user1452259 Commented Jun 12, 2012 at 21:34
  • I would suggest opening the file with an hex editor and checking if there aren't any funny invisible control characters before the newline between </script> and <h2>. – Frédéric Hamidi Commented Jun 12, 2012 at 21:39
 |  Show 5 more ments

2 Answers 2

Reset to default 3

IE is notorious for not specifying the file where an error occurs, or not specifying it correctly. Try running it in the IE debugger and see if the error isn't on line 175 of a different file altogether.

EDIT Debugger didn't work, so you are going to have to do this the hard way: save the page to your disk; concatenate all the Javascript files into one big file; include that file from an otherwise blank page. Now the line number will be different, but accurate in the only JS file you have.

My prediction: terminal ma. The following line of code is legal in Javascript, but not in IE "JScript".

 var x = [ 0, ];

"Steve Jobs is dead and Bill Gates is alive because there is no god. But 100 years from now, Jobs will be remembered with Edison and Eli Whitney while Gates will be forgotten, because there is justice."

I just fired up my windows box running IE 8.0.7601 and have no syntax issues being reported with this code

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3/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>

本文标签: internet explorerIE8 throws JavaScript syntax erroroutside of a scriptStack Overflow