webkit中的意外标记ILLEGAL

时间:2010-12-10 00:20:30

标签: javascript jquery google-chrome safari

// 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 个答案:

答案 0 :(得分:136)

删除该区域周围的所有不可见字符(空白),然后再试一次。

我在复制/粘贴代码时在Safari中看到了这个错误。你可以拿起一些无效的(不幸的是看不见的)字符。

从jsFiddle复制时,我常常遇到很多事。

答案 1 :(得分:14)

它不适用于此特定代码示例,但作为Google食品,因为我收到了相同的错误消息:

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

会出现此错误,但

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

不会。

此处有进一步说明:Why split the <script> tag when writing it with document.write()?

答案 2 :(得分:6)

当脚本文件包含容器一些特殊字符时以及当我在本地moode(直接从本地磁盘)运行时,我得到了同样的错误。我的情况解决方案是明确告诉编码:

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

答案 3 :(得分:6)

注意任何运行Vagrant的人:这可能是由于其共享文件夹的错误造成的。为Vagrantfile中的共享文件夹指定NFS以避免发生这种情况。

只需将type: "nfs"添加到最后就可以了,就像这样:

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

答案 4 :(得分:4)

Google员工的另一个可能原因:使用大小如此的其他单位:

$('#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'消除了错误。

答案 5 :(得分:2)

对于Google-fodder:在文本编辑器中检查.js文件是否保存为Unicode并考虑将其设置为ANSI;还要检查换行符是否设置为DOS并考虑将它们切换到Unix(当然,取决于你的服务器)。

答案 6 :(得分:2)

如有疑问......请使用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 ...

让你走“嗯嗯”的事情

答案 7 :(得分:1)

双反斜杠也有效!然后你声明应该有一个/而不是某个函数或什么。

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

答案 8 :(得分:1)

这不会完全引用给定的问题,但我想在这里分享我的错误,也许某些人会做出类似的问题,并且也会在这里找到他/她的问题:

我遇到Unexpected token ILLEGAL错误,因为我将一个数字命名为1st char。

那是3x3check()。 将其更改为check3x3()解决了我的问题。

答案 9 :(得分:0)

这个错误也可能是由像这样的javascript行引起的:

navi_elements.style.bottom = 20px;

请注意,该值不是字符串。

答案 10 :(得分:0)

您可以使用在线Minify,它可以有效地删除这些不可见的字符,但也会更改您的代码。所以要小心。

http://jscompress.com/