Неожиданный токен НЕЗАКОННЫЙ в webkit - PullRequest
61 голосов
/ 10 декабря 2010
// 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: неожиданно ''."

Ответы [ 11 ]

136 голосов
/ 10 декабря 2010

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

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

Раньше со мной часто случалось копирование из jsFiddle.

14 голосов
/ 11 мая 2011

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

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

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

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

не будет.

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

6 голосов
/ 12 июня 2014

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

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

config.vm.synced_folder ".", "/vagrant", type: "nfs"
6 голосов
/ 10 февраля 2013

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

<script src="my.js" charset="UTF-8"></script>
4 голосов
/ 08 февраля 2012

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

$('#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» исключило ошибку.

2 голосов
/ 05 декабря 2012

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

Джлинт сказал мне, что у меня был случайный "." Charachter ...

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

2 голосов
/ 28 января 2012

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

1 голос
/ 11 декабря 2013

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

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

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

1 голос
/ 01 ноября 2011

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

<script>document.write('<script src="…"><//script>');</script>
0 голосов
/ 10 октября 2014

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

http://jscompress.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...