Неожиданный токен ILLEGAL в 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;
    });

});

Я получаю Uncaught SyntaxError: Неожиданный токен ILLEGAL в упомянутой выше строке. Это происходит только в Google Chrome и Safari. Он работает в Firefox, и тот же код работает на этом JSBin (http://jsbin.com/uceqi/18)

Что происходит?

Существует множество ссылок на эту проблему в Stackoverflow, но ни одна из них, похоже, не применима к этой ситуации.

Если это помогает JSLint также бросает и ошибки на этом символе линии 2 "Проблема в строке 22 символ 2: Неожиданный". "

Ответ 1

Удалите все невидимые символы (пробелы) вокруг этой области, затем повторите попытку.

Я видел эту ошибку в Safari при копировании/вставке кода. Вы можете подобрать некоторые недопустимые (и, к сожалению, невидимые) символы.

Используется для меня во время копирования из jsFiddle.

Ответ 2

Это не относится к этому примеру кода, но как к продукту Google, так как я получил то же сообщение об ошибке:

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

даст эту ошибку, но

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

не будет.

Дальнейшее объяснение здесь: Зачем разбивать <script> тег при записи его с помощью document.write()?

Ответ 3

Я получил ту же ошибку, когда в файле script я включил контейнер с некоторыми специальными символами и когда я работал в local moode (прямо с локального диска). В моем случае решение заключалось в том, чтобы явно указать кодировку:

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

Ответ 4

Примечание для всех, кто работает с Vagrant: это может быть вызвано ошибкой с их общими папками. Укажите NFS для ваших общих папок в вашем Vagrantfile, чтобы этого не произошло.

Просто добавление type: "nfs" в конец сделает трюк, например:

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

Ответ 5

Другая возможная причина для GoogleGoglers: использование дополнительных единиц в таком размере:

$('#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" изгнало ошибку.

Ответ 6

Также для Google-фуража: проверьте в своем текстовом редакторе, сохраняется ли файл .js как Unicode и рассмотрите возможность его установки в ANSI; также проверьте, установлены ли для строк в DOS и их переключение на Unix (в зависимости от вашего сервера, конечно).

Ответ 7

В случае сомнений... используйте 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...

Вещи, которые заставляют вас идти "хмммммм"

Ответ 8

Двойная обратная косая черта также работает! Тогда вы заявляете, что на самом деле должна быть/вместо какой-либо функции или чего-то еще.

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

Ответ 9

Это не будет точно ссылаться на заданную проблему, но я хочу поделиться своей ошибкой здесь, возможно, что-то 1 сделает simmilar один и также приземлится с его/ее проблемой здесь:

Ive получил ошибку Unexpected token ILLEGAL, потому что я назвал функцию с номером как 1-й char.

Это было 3x3check(). Изменение его на check3x3() решило мою проблему.

Ответ 10

Эта ошибка также может быть вызвана строкой javascript, подобной этой:

navi_elements.style.bottom = 20px;

Обратите внимание, что это значение не является строкой.

Ответ 11

Вы можете использовать онлайн Minify, он эффективно удаляет эти невидимые персонажи, а также изменяет ваш код. Поэтому будьте осторожны.

http://jscompress.com/