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将其解开!
我刚刚遇到类似的问题,而从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,它可以有效地删除这些隐形字符,但也会更改您的代码。 所以要小心。