web-dev-qa-db-fra.com

Jeton inattendu ILLEGAL dans le kit de développement

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

});

Je reçois une SyntaxError Uncaught: jeton inattendu ILLEGAL sur la ligne mentionnée ci-dessus. Cela ne se produit que dans Google Chrome et Safari. Cela fonctionne dans Firefox et le même code fonctionne dans ce JSBin ( http://jsbin.com/uceqi/18 )

Que se passe-t-il?

Il existe de nombreuses références à ce problème sur Stackoverflow mais aucune d’entre elles ne semble s’appliquer à cette situation.

Si cela aide, JSLint émet également une erreur sur cette ligne, caractère 2 "Problème à la ligne 22, caractère 2: inattendu". "

61
Patrick Arlt

Supprimez tous les caractères invisibles (espaces) autour de cette zone, puis essayez à nouveau.

J'ai vu cette erreur dans Safari lors du copier/coller de code. Vous pouvez choisir des caractères invalides (et malheureusement invisibles).

Il m’arrivait souvent beaucoup lors de la copie de jsFiddle.

136
user113716

Cela ne s'applique pas à cet exemple de code particulier, mais en tant que nourriture Google, car j'ai le même message d'erreur:

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

donnera cette erreur mais

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

ne sera pas.

Explication supplémentaire ici: Pourquoi diviser la balise <script> lors de son écriture avec document.write ()?

14
Henrik N

J'ai eu la même erreur lorsque le fichier de script que je contenait contenait des caractères spéciaux et lorsque je courais dans moode local (directement à partir du disque local). Dans mon cas, la solution consistait à indiquer explicitement le codage:

<script src="my.js" charset="UTF-8"></script>
6
Juha Palomäki

Note pour ceux qui utilisent Vagrant: cela peut être causé par un bogue avec leurs dossiers partagés. Spécifiez NFS pour vos dossiers partagés dans votre fichier Vagrant pour éviter que cela ne se produise.

Ajoutant simplement type: "nfs" jusqu'à la fin fera l'affaire, comme suit:

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

Une autre cause possible pour Googlers: Utiliser des unités supplémentaires dans une taille comme celle-ci:

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

Paramétrer '351px' m'a donné l'erreur. Supprimer 'px' a banni l'erreur.

4
Mere Development

Également pour Google-Fodder: vérifiez dans votre éditeur de texte si le fichier .js est enregistré au format Unicode et envisagez de le définir sur ANSI; vérifiez également si les sauts de ligne sont configurés sur DOS et envisagez de les basculer vers Unix (en fonction de votre serveur, bien sûr).

2
Tom Auger

En cas de doute ... utilisez JSLint pour le sortir!

http://www.jslint.com

Je viens de rencontrer un problème similaire lors de la copie de 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 m'a dit que j'avais un hasard "." Charachter ...

Les choses qui vous font aller "hmmmmmm"

2
Naruto Sempai

Double backslash fonctionne également! Ensuite, vous déclarez qu’il devrait exister un/au lieu d’une fonction ou de quelque chose.

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

Ce ne sera pas exactement une référence au problème, mais je voudrais partager mon erreur ici, peut-être que certains1 en feront une semblable et atterriront aussi avec son problème ici:

J'ai l'erreur Unexpected token ILLEGAL Parce que j'ai nommé une fonction avec un numéro comme 1er caractère.

C'était 3x3check(). Le changer en check3x3() a résolu mon problème.

1
pbialy

Cette erreur peut aussi être causée par une ligne javascript comme celle-ci:

navi_elements.style.bottom = 20px;

Notez que la valeur n'est pas une chaîne.

0
reggie

Vous pouvez utiliser Minify en ligne, il supprime efficacement ces caractères invisibles mais modifie également votre code. Donc sois prudent.

http://jscompress.com/

0
Xdg