Token inesperado ILEGAL no webkit

// 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; }); }); 

Eu estou recebendo um Untaught SyntaxError: Inesperado token ILLEGAL na linha mencionada acima. Ocorre apenas no Google Chrome e no Safari. Ele funciona no Firefox e o mesmo código funciona neste JSBin ( http://jsbin.com/uceqi/18 )

O que está acontecendo?

Existem inúmeras referências a esse problema no Stackoverflow, mas nenhuma delas parece se aplicar a essa situação.

Se isso ajuda o JSLint também lança e erro nesse caractere de linha 2 “Problema na linha 22 caractere 2: Inesperado ”.”

Exclua todos os caracteres invisíveis (espaço em branco) em torno dessa área e tente novamente.

Eu vi esse erro no Safari quando copiar / colar código. Você pode pegar alguns caracteres inválidos (e infelizmente invisíveis).

Costumava acontecer comigo quando copiava do jsFiddle.

Não se aplica a este exemplo de código específico, mas como comida do Google, desde que recebi a mesma mensagem de erro:

 '); 

vai dar esse erro, mas

  

não vou.

Mais explicações aqui: Por que dividir a tag

Eu recebi o mesmo erro quando o arquivo de script que eu estava incluindo contêiner alguns caracteres especiais e quando eu estava correndo no moode local (diretamente do disco local). No meu caso, a solução foi explicitamente dizer a codificação:

  

Nota para qualquer um que execute o Vagrant: isso pode ser causado por um bug com suas pastas compartilhadas. Especifique o NFS para suas pastas compartilhadas em seu Vagrantfile para evitar que isso aconteça.

Simplesmente adicionando o type: "nfs" ao final vai fazer o truque, assim:

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

Outra possível causa para os Googlers: usar unidades adicionais em um tamanho como este:

 $('#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' }); 

Definir ‘351px’ lá me deu o erro. Removendo ‘px’ baniu o erro.

Também para o Google-forragem: verifique em seu editor de texto se o arquivo .js é salvo como Unicode e considere defini-lo como ANSI; verifique também se os feeds de linha estão definidos para DOS e considere a possibilidade de mudá-los para o Unix (dependendo do seu servidor, é claro).

Em caso de dúvida … use o JSLint para retirá-lo!

http://www.jslint.com

Acabei de me deparar com um problema semelhante ao copiar isto do 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 me disse que eu tinha um random “.” Charachter …

Coisas que fazem você ir “hmmmmmm”

Double backslash também funciona! Então você declara que deveria haver um / em vez de alguma function ou algo assim.

  

Não será exatamente uma referência ao problema dado, mas eu quero compartilhar o meu erro aqui, talvez alguns1 farão um parecido e também vão aterrissar com o problema dele aqui:

Recebi erro Unexpected token ILLEGAL porque nomeei uma function com um número como primeiro caractere.

Foi 3x3check() . Mudando para check3x3() resolvi meu problema.

Este erro também pode ser causado por uma linha de javascript como esta:

 navi_elements.style.bottom = 20px; 

Observe que o valor não é uma string.

Você pode usar o Minify online, ele remove esses caracteres invisíveis de forma eficiente, mas também altera seu código. Por isso tem cuidado.

http://jscompress.com/