Webkit中的意外标记ILLEGAL

// if the box is outside the window, move it to the end function checkEdge() { var windowsLeftEdge = $('#window').position().left; $('.box').each( function(i, box) { // right edge of the sliding box var boxRightEdge = $(box).position().left + $(box).width(); // position of last box + width + 10px var newPosition = getNewPosition(); if ( parseFloat(boxRightEdge) < parseFloat(windowsLeftEdge) ) { $(box).css('left', newPosition); $(box).remove().appendTo('#window'); first = $('.box:first').attr('class'); } }); }​ //Uncaught SyntaxError: Unexpected token ILLEGAL Occurs Here // arrange the boxes to be aligned in a row function arrangeBoxes() { $('.box').each( function(i, item) { var position = $('#window').position().left + i * ( $(item).width()); $(item).css('left', position+'px') }); } // shifts all the boxes to the left, then checks if any left the window function shiftLeft() { $('.box').animate({'left' : "-=100px"}, 5000, 'linear', checkEdge()); } // returns the new location for the box that exited the window function getNewPosition() { return $('.box:last').position().left + $('.box:last').outerWidth(); } $(window).load(function() { arrangeBoxes(); shiftLeft(); setInterval('shiftLeft()', 5000); $('#gallery-slideshow').nivoSlider({ effect:'fade', //Specify sets like: 'fold,fade,sliceDown' slices:15, animSpeed:500, //Slide transition speed pauseTime:3000, startSlide:0, //Set starting Slide (0 index) directionNav:true, //Next & Prev directionNavHide:true, //Only show on hover controlNav:false, //1,2,3... keyboardNav:false, //Use left & right arrows pauseOnHover:false, //Stop animation while hovering manualAdvance:false, //Force manual transitions captionOpacity:0, //Universal caption opacity beforeChange: function(){}, afterChange: function(){}, slideshowEnd: function(){}, //Triggers after all slides have been shown lastSlide: function(){}, //Triggers when last slide is shown afterLoad: function(){} //Triggers when slider has loaded }); }); $(document).ready(function(){ $('.class-table tr').click(function(){ window.location=$(this).find("a").attr("href"); return false; }); $('.special-workshop').click(function(){ window.location=$(this).find("a").attr("href"); return false; }); }); 

我得到一个未捕获的SyntaxError:上面提到的线上意外的令牌非法。 它仅在Google Chrome和Safari中出现。 它在Firefox中工作,相同的代码工作在这个JSBin( http://jsbin.com/uceqi/18 )

到底是怎么回事?

在Stackoverflow上有很多这个问题的引用,但是他们似乎都不适用于这种情况。

如果它有帮助JSLint也会抛出并在该行字符2错误“第22行字符2:意外”问题。

删除该区域周围的所有不可见字符(空格),然后再试一次。

在复制/粘贴代码时,我在Safari中看到了这个错误。 你可以拿起一些无效的(但不可见的)字符。

从jsFiddle复制时,曾经发生过很多事情。

它不适用于这个特定的代码示例,但作为谷歌的食物,因为我得到了同样的错误信息:

 <script>document.write('<script src="…"></script>');</script> 

会给这个错误,但

 <script>document.write('<script src="…"><'+'/script>');</script> 

将不会。

这里进一步解释: 为什么在用document.write()写入时为它分割<script>标签?

当脚本文件包含容器的一些特殊字符,以及当我在本地moode(直接从本地磁盘)运行时,我得到了同样的错误。 我的情况下,解决scheme是明确地告诉编码:

 <script src="my.js" charset="UTF-8"></script> 

注意任何运行Vagrant的人:这可能是由于他们的共享文件夹存在一个错误。 在Vagrant文​​件中为共享文件夹指定NFS以避免发生这种情况。

简单地添加type: "nfs"到最后会做的,就像这样:

 config.vm.synced_folder ".", "/vagrant", type: "nfs" 

Google员工的另一个可能的原因:使用像这样大小的其他单位:

 $('#file_upload').uploadify({ 'uploader' : '/uploadify/uploadify.swf', 'script' : '/uploadify/uploadify.php', 'cancelImg' : '/uploadify/cancel.png', 'folder' : '/uploads', 'queueID' : 'custom-queue', 'buttonImg': 'img/select-images.png', 'width': '351px' }); 

设置“351px”那里给了我错误。 删除'px'放逐了错误。

对于Google饲料:在文本编辑器中检查.js文件是否保存为Unicode,并考虑将其设置为ANSI; 还要检查是否将换行符设置为DOS,并考虑将其切换到Unix(当然取决于您的服务器)。

如果有疑问,请使用JSLint将其解开!

http://www.jslint.com

我刚刚遇到类似的问题,而从JFiddle复制这个;

 $('input[name=MeetAll]').change(function (e) { $('#MeetMost').attr('checked', !$('#MeetAll').attr('checked')); }); $('input[name=MeetMost]').change(function (e) { $('#MeetAll').attr('checked', !$('#MeetMost').attr('checked')); });​ 

Jslint告诉我,我有一个随机的“。” Charachter …

事情让你走“嗯”

双反斜杠也适用! 然后你声明真的应该有一个/而不是一些function或东西。

 <script>document.write('<script src="…"><//script>');</script> 

它不会完全是指给定的问题,但我想在这里分享我的错误,也许有些人会做出类似的错误,也将在这里与他/她的问题:

我得到Unexpected token ILLEGAL错误,因为我命名一个数字作为第一个字符的函数。

这是3x3check() 。 将其更改为check3x3()解决了我的问题。

这个错误也可能是由这样一个javascript行引起的:

 navi_elements.style.bottom = 20px; 

注意这个值不是一个string。

您可以使用在线Minify,它可以有效地删除这些隐形字符,但也会更改您的代码。 所以要小心。

http://jscompress.com/