Chrome Uncaught语法错误:意外令牌ILLEGAL

agm*_*eod 137 javascript jquery google-chrome

可能重复:
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;
}?
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 259

在该源的末尾有某种虚假的特征.尝试删除最后一行并将其添加回来.

我无法确切地知道那里有什么,但......

编辑 - 我认为这是一个零宽度空间,Unicode 200B.看起来非常奇怪,我当然不能确定它不是Stackoverflow工件,但是当我将最后一个功能(包括完整的最后一行)复制/粘贴到Chrome控制台时,我收到了您的错误.

这些角色的臭名昭着的来源就像jsfiddle这样的网站.我并不是说它们有任何问题 - 它只是某种东西的副作用,也许是使用内容可编辑的输入小部件.

如果您怀疑自己有这种疾病的情况,并且您使用的是MacOS或Linux/Unix,那么od命令行工具可以向您展示(尽管以相当丑陋的方式)源代码文件中的数字值.一些IDE和编辑器也可以显示"有趣"的字符.请注意,这些字符并不总是一个问题.例如,在字符串常量中嵌入的Unicode字符完全可以(在大多数合理的编程语言中).当语言解析器在不期望它们时遇到字符时,问题就开始发生.

  • +1感谢尖尖.从jsFiddle剪切和粘贴给了我那个角色. (80认同)
  • 这通常是我在使用jsfiddle创建脚本时学到的,然后将其复制并粘贴到文本编辑器并尝试在浏览器中运行.这是一个隐藏的角色,我相信在Mac上看起来像一个子弹点. (3认同)
  • 哇,谢谢你为此发布解决方案.我一开始并不相信我的代码因为复制/粘贴而无法正常工作,但我想我会尝试一下并修复它. (2认同)
  • unicode字符LINE SEPARATOR值2028也有同样的问题.我使用http://rishida.net/tools/conversion/上的在线工具找出我的字符串中可能包含哪个隐藏的unicode字符. (2认同)
  • 从pdf文件复制和粘贴会出现此错误.我正在使用这个引号--->""而不是"". (2认同)

Kur*_*tWM 14

粘贴从jsfiddle复制的代码后,我在Chrome中遇到同样的错误.

如果从jsfiddle中的面板中选择所有代码并将其粘贴到自由文本编辑器Notepad ++中,您应该能够将问题字符看作问号"?".在代码的最后.删除此问号,然后从Notepad ++复制并粘贴代码,问题就会消失.


Eye*_*Eye 11

当多行字符串包含新的line(\n)字符时,我遇到了同样的错误.将所有行合并为一个(从而删除所有新行字符)并将其发送到用于解决的浏览器.但代码非常不方便.

通常无法理解为什么这是Chrome中的一个问题,直到我发现一条声明说Chrome中当前版本的JavaScript引擎不支持多行字符串,这些字符串用单引号括起来并且\n在其中包含新的line()字符.为了使其工作,多行字符串需要用双引号括起来.将我的代码更改为此,解决了此问题.

我将尝试查找对标准或Chrome文档的引用,以证明这一点.在此之前,请尝试此解决方案,看看是否适合您.