web-dev-qa-db-ja.com

Chromeの不明な構文エラー:予期しないトークンILLEGAL

可能な重複:
SyntaxError:予期しないトークンILLEGAL

Chromeがページにスクリプトファイルを読み込もうとしたときに件名にエラーが表示される。 JavaScriptファイルの最後の行にあります。私はそれで何か問題を見つけることができないようです。 Firefoxにエラーはなく、スクリプトは予想通りに動作します。フォーム検証を使うだけ

// JavaScript Document
$(function() {
  $('#wm-form').submit(function() {
    var errors = false;
    var errorMsg = "";
    $('.required').each(function() {
      if(!validField($(this))) {
        errorMsg += $(this).attr('name').capitalize() + " cannot be blank\n";
        errors = true;
      }
    });
    var emailAddress = $('#email');
    if(isValid(emailAddress) && !(/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$/.test(emailAddress.val()))) {
      errorMsg += "Not a valid email address. Please enter in a correctly formatted email address";
      errors = true;
    }
    if(errors) {
      alert(errorMsg);
      return false;
    }
  });

  $('.form-focus').click(function() {
    $(document).scrollTop(0);
    $('#first_name').focus();
    return false;
  });
});

function validField(element) {
  if(!isValid(element.val()) || (element.attr('placeholder') && element.attr('placeholder') == element.val()) || 
    (element.attr('type') == 'radio' && !checkedRadio(element))) {
    return false;
  }
  else {
    return true;
  }
}

function isValid(ele) {
  if(ele == null || ele == '') {
    return false;
  }
  else {
    return true;
  }
}

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
};

function checkedRadio (element) {
  var valid = false;
  $('input[name="'+ element.attr("name") +'"]:checked').each(function() {
    valid = true;
  });

  return valid;
}​
137
agmcleod

そのソースの最後には、ある種の偽の文字があります。最後の行を削除して追加し直してください。

私はまだそこにあるものを正確に理解することはできません、まだ...

edit - 幅がゼロのスペース、Unicode 200Bだと思います。かなり奇妙に思えますし、それがStackoverflowアーティファクトではないことはもちろんわかりませんが、最後の行全体を含む最後の機能をChromeコンソールにコピー&ペーストすると、エラーが発生します。

そのような文字の悪名高いソースは jsfiddle のようなウェブサイトです。私はそれらに何か問題があると言っているのではありません - それはただ何かの副作用、おそらく編集可能な入力ウィジェットの使用です。

あなたがこの病気のケースを持っていて、あなたがMacOSまたはLinux/Unixを使っているのではないかと思うなら、odコマンドラインツールはあなたにソースコードの文字の数値を見せることができます。ファイル。 IDEやエディタによっては、「変な」文字を表示することがあります。そのような文字はalwaysではないことに注意してください。たとえば、文字列定数にUnicode文字を埋め込むことは、まったく問題ありません(とにかくもっとも妥当なプログラミング言語では)。言語パーサーが予期しない文字に出会ったときに問題が起こり始めます。

259
Pointy

Jsfiddleからコピーしたコードを貼り付けた後、Chromeで同じエラーが発生します。

Jsfiddleのパネルからすべてのコードを選択し、それをフリーテキストエディタのNotepad ++に貼り付けると、問題のある文字が疑問符「?」として表示されるはずです。コードの最後に。この疑問符を削除してから、Notepad ++からコードをコピーして貼り付けると問題は解決します。

14
KurtWM

複数行の文字列に改行(\n)文字が含まれているときに同じエラーが発生しました。すべての行を1つにマージし(したがって、すべての改行文字を削除し)、解決に使用されるブラウザに送信します。しかし、コーディングするのは非常に不便でした。

Chromeの現在のバージョンのJavaScriptエンジンでは一重引用符で囲まれ、改行(\n)文字が含まれている複数行の文字列はサポートされていないという文に遭遇するまで、なぜChromeで問題になるのか理解できませんでしたそれら。機能させるためには、複数行の文字列を二重引用符で囲む必要があります。私のコードをこれに変更して、この問題を解決しました。

これを証明する標準またはChromeドキュメントへの参照を見つけようとします。それまでは、この解決策を試して、同様にうまくいくかどうかを確認してください。

11
Eye

Chromeでも同じエラーが発生しました。 Chromeコンソールから、エラーはHTMLファイルの1行目にあることがわかりました。

実際には.jsファイルにありました。それでsetValidNou(1060, $(this).val(), 0')エラータイプに気をつけてください。

2
Dragos Durlut