webkit 中的意外令牌非法

IT技术 javascript jquery google-chrome safari
2021-01-18 02:42:22
// 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: Unexpected token ILLEGAL。它仅出现在 Google Chrome 和 Safari 中。它适用于 Firefox,同样的代码适用于这个 JSBin ( http://jsbin.com/uceqi/18 )

到底是怎么回事?

Stackoverflow 上有很多关于这个问题的参考资料,但似乎没有一个适用于这种情况。

如果它有帮助,JSLint 也会在该行字符 2 上抛出并出错“第 22 行字符 2 处的问题:意外的 ' '。”

6个回答

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

复制/粘贴代码时,我在 Safari 中看到了该错误。您可以选择一些无效(不幸的是不可见)的字符。

从 jsFiddle 复制时经常发生在我身上。

同样,不要从 jsFiddle 复制粘贴器 :)
2021-03-21 02:42:22
您好,这可能会让您感到震惊 - 但您有传言说从 jsFiddle 复制/粘贴不是一个明智的决定。
2021-03-25 02:42:22
是的,不要从 jsFiddle 复制粘贴。将它粘贴到文本编辑中,另存为纯文本,然后重新复制粘贴它并且它起作用了。
2021-03-26 02:42:22
我发现当代码中有回车 ( \r) 字符时会发生这种情况令人讨厌的是,这些不会轻易显示在源代码中。
2021-04-03 02:42:22
好吧,上面的评论者指出了这一点,但我觉得自己有必要指出这一点,不要从 jsFiddle 复制粘贴!
2021-04-09 02:42:22

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

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

会给出这个错误但是

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

将不会。

这里进一步解释:为什么在用 document.write() 编写 <script> 标签时拆分它?

为我修好了。谢谢!此外,在您提供的链接中,它实际上说要在<之间分隔字符串/,例如'<' + '/script>'
2021-03-30 02:42:22
@Gavin 很高兴它有所帮助!好点; 更新了我的答案。(它最初有'<script src="…"></'+'script>'。)
2021-03-31 02:42:22

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

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

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

简单地添加type: "nfs"到最后就可以了,如下所示:

config.vm.synced_folder ".", "/vagrant", type: "nfs"
对于不能使用 nfs 的窗口用户呢?
2021-03-16 02:42:22
你传奇!再次rm -rf node_modules运行npm cache clean之前不得不运行npm install,但它终于奏效了。感谢尽量减少小时我在这浪费了。
2021-04-06 02:42:22

谷歌员工的另一个可能原因:使用如下尺寸的附加单元:

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