Непредвиденная лексема незаконным в 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;
    });

});

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

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

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

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

11 61

11 ответов:

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

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

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

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

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

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

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

не будет.

дальнейшее объяснение здесь: зачем разбивать тег

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

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

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

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

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

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

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

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

когда сомневаешься... использовать 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 сказал мне, что у меня был случайный "."Персонаж...

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

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

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

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

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

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

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

navi_elements.style.bottom = 20px;

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

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

http://jscompress.com/