Unexpected token ILLEGAL in webkit
Asked Answered
V

11

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

});

I am getting an Uncaught SyntaxError: Unexpected token ILLEGAL on the line mentioned above. It occurs only in Google Chrome and Safari. It works in Firefox and the same code works on this JSBin (http://jsbin.com/uceqi/18)

What is going on?

There are numerous references to this problem on Stackoverflow but none of them seem to apply to this situation.

If it helps JSLint also throws and error on that line character 2 "Problem at line 22 character 2: Unexpected '​'."

Vivid answered 10/12, 2010 at 0:20 Comment(1)
Possible duplicate of No visible cause for "Unexpected token ILLEGAL"Cyclostome
T
136

Delete all invisible characters (whitespace) around that area, then give it another try.

I've seen that error in Safari when copy/pasting code. You can pick up some invalid (and unfortunately invisible) characters.

Used to happen to me a lot when copying from jsFiddle.

Thickness answered 10/12, 2010 at 0:25 Comment(11)
same, don't copy paster from jsFiddle :)Camelliacamelopard
Yep, do not copy paste from jsFiddle. Pasted it into Text Edit, saved as plain text and then re-copy pasted it and it worked.Crasis
For those that missed it: copying and pasting code from jsFiddle could potentially lead to an issue with whitespace that is, as yet, unfixed in october 2012.Nashner
I have found this occurs when there are carriage return (\r) characters in the code. Annoyingly these won't display easily in the source.Spigot
well, the commenters above pointed it, but I feel the urge to point it out myself, DO NOT COPY PASTE FROM jsFiddle !Freelance
Hello, this may come as a shock to you - but you rumour has it that it is not a wise decision to copy/paste from jsFiddle.Eddaeddana
I got it from copying from stackoverflow, I thought it was some kind of strange variation of curly braces.Universally
Also look out for ' and " that are copied/pasted.Sigrid
If you're tired; you might want to check you aren't trying to load a CSS file via <script src=""> as it will cause a Uncaught SyntaxError: Unexpected token ILLEGALLapierre
or don't be lazy and write the code yourself without copy+paste :pTimetable
Additionally you could use text editors like Notepad++ and to find unwanted characters.Selfhypnosis
P
14

It doesn't apply to this particular code example, but as Google food, since I got the same error message:

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

will give this error but

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

will not.

Further explanation here: Why split the <script> tag when writing it with document.write()?

Platelayer answered 11/5, 2011 at 7:39 Comment(2)
Fixed it for me. Thanks! Also, in the link you provided it actually says to separate the string between < and /, like '<' + '/script>'.Enlace
@Enlace Glad it helped! And good point; updated my answer. (It originally had '<script src="…"></'+'script>'.)Platelayer
B
6

I got the same error when the script file I was including container some special characters and when I was running in local moode (directly from local disk). I my case the solution was to explicitly tell the encoding:

<script src="my.js" charset="UTF-8"></script>
Bilocular answered 10/2, 2013 at 16:39 Comment(0)
T
6

Note for anyone running Vagrant: this can be caused by a bug with their shared folders. Specify NFS for your shared folders in your Vagrantfile to avoid this happening.

Simply adding type: "nfs" to the end will do the trick, like so:

config.vm.synced_folder ".", "/vagrant", type: "nfs"
Thunell answered 12/6, 2014 at 16:34 Comment(2)
what about for window users who cannot use nfs?Carreno
You legend! Had to rm -rf node_modules and run npm cache clean before running npm install again but it finally worked. Thanks for minimising the hours I wasted on this.Jujitsu
A
4

Another possible cause for Googlers: Using additional units in a size like so:

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

Setting '351px' there gave me the error. Removing 'px' banished the error.

Asomatous answered 8/2, 2012 at 18:35 Comment(0)
S
2

Also for the Google-fodder: check in your text editor whether the .js file is saved as Unicode and consider setting it to ANSI; also check if the linefeeds are set to DOS and consider switching them to Unix (depending on your server, of course).

Simulation answered 27/1, 2012 at 22:10 Comment(1)
Also check that you don't have a Byte Order Mark as the first few characters in a Hex editorScapula
A
2

When in doubt... use JSLint to get it out!

http://www.jslint.com

I just ran into a similar problem whilst copying this from 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 told me i had a random "." Charachter...

Things that make you go "hmmmmmm"

Adust answered 5/12, 2012 at 19:2 Comment(0)
W
1

Double backslash also works ! Then you declare there really should be a / instead of some function or something.

<script>document.write('<script src="…"><//script>');</script>
Waitabit answered 1/11, 2011 at 11:51 Comment(0)
M
1

It won't be exactly refering to the given problem, but I wanna share my mistake here, maybe some1 will make simmilar one and will also land with his/her problem here:

Ive got Unexpected token ILLEGAL error because I named a function with a number as 1st char.

It was 3x3check(). Changing it to check3x3() solved my problem.

Military answered 11/12, 2013 at 9:58 Comment(0)
U
0

This error can also be caused by a javascript line like this one:

navi_elements.style.bottom = 20px;

Notice that the value is not a string.

Urbina answered 22/9, 2014 at 6:29 Comment(0)
L
0

You can use online Minify, it removes these invisible characters efficiently but also changes your code. So be careful.

http://jscompress.com/

Llanes answered 10/10, 2014 at 14:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.