web-dev-qa-db-ja.com

Webkitの予期しないトークンILLEGAL

// 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の問題:予期しない「

61
Patrick Arlt

その領域の周りのすべての不可視文字(空白)を削除してから、もう一度試してください。

コードをコピー/貼り付けするときに、Safariでそのエラーを見ました。いくつかの無効な(残念ながら見えない)文字を拾うことができます。

JsFiddleからコピーするときによく私に起こりました。

136
user113716

この特定のコード例には適用されませんが、Googleフードとして、同じエラーメッセージが表示されます。

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

このエラーが発生しますが、

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

しない。

ここでさらに説明します: document.write()で書き込むときに<script>タグを分割する理由

14
Henrik N

コンテナに特殊文字を含めたスクリプトファイルと、ローカルムード(ローカルディスクから直接)で実行しているときに、同じエラーが発生しました。私の場合、解決策は明示的にエンコーディングを伝えることでした:

<script src="my.js" charset="UTF-8"></script>
6
Juha Palomäki

Vagrantを実行しているユーザーへの注意:これは、共有フォルダーのバグが原因である可能性があります。これを回避するには、Vagrantfileの共有フォルダーにNFSを指定します。

type: "nfs"を最後に追加するだけで、次のようにトリックが実行されます。

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

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」を削除すると、エラーが消えました。

4

また、Googleフォダーの場合:.jsファイルがUnicodeとして保存されているかどうかをテキストエディターで確認し、ANSIに設定することを検討してください。また、ラインフィードがDOSに設定されているかどうかを確認し、Unixへの切り替えを検討してください(もちろん、サーバーによって異なります)。

2
Tom Auger

疑問がある場合は、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は、ランダムな「。」があったと言った。文字...

あなたを「hmmmmmm」にさせるもの

2
Naruto Sempai

ダブルバックスラッシュも機能します!次に、何らかの関数などの代わりに/を実際に使用する必要があることを宣言します。

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

それは与えられた問題を正確に指しているわけではありませんが、ここで私の間違いを共有したいと思います。

1番目の文字として番号を付けて関数に名前を付けたため、_Unexpected token ILLEGAL_エラーが発生しました。

3x3check()でした。それをcheck3x3()に変更することで問題が解決しました。

1
pbialy

このエラーは、次のようなjavascript行によっても発生する可能性があります。

navi_elements.style.bottom = 20px;

値は文字列ではないことに注意してください。

0
reggie

オンラインのMinifyを使用すると、これらの見えない文字を効率的に削除できますが、コードも変更されます。ので注意してください。

http://jscompress.com/

0
Xdg