it-swarm-es.com

Error de sintaxis de Chrome Uncaught: Token inesperado ILEGAL

Posible duplicado:
SyntaxError: fichas inesperado ILEGAL

Recibiendo el error de asunto cuando Chrome intenta cargar el archivo de script en la página. Dice que está en la última línea del archivo javascript. Parece que no puedo encontrar nada malo en ello. No hay errores en Firefox, y el script funciona como se esperaba. Simplemente utilizando la validación de formularios.

// 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

Hay algún tipo de personaje falso al final de esa fuente. Intenta eliminar la última línea y agregarla de nuevo.

No puedo entender exactamente lo que hay, sin embargo ...

edit - Creo que es un espacio de ancho cero, Unicode 200B. Parece bastante raro y no puedo estar seguro de que no sea un artefacto de Stackoverflow, pero cuando copio/pego esa última función, incluida la última línea completa en la consola de Chrome, recibo su error.

Una fuente notoria de tales personajes son sitios web como jsfiddle . No estoy diciendo que haya algo malo en ellos, es solo un efecto secundario de algo, tal vez el uso de widgets de entrada editables por el contenido.

Si sospechas que tienes un caso de esta dolencia y estás en MacOS o Linux/Unix, la herramienta de línea de comandos od puede mostrarte (aunque de una manera bastante fea) los valores numéricos en los caracteres del código fuente expediente. Algunos IDE y editores también pueden mostrar caracteres "divertidos". Tenga en cuenta que dichos caracteres no son siempre un problema. Está perfectamente bien (de todos modos, en la mayoría de los lenguajes de programación razonables) que haya caracteres Unicode incrustados en constantes de cadena, por ejemplo. Los problemas comienzan a ocurrir cuando el analizador de lenguaje se encuentra con los caracteres cuando no los espera.

259
Pointy

Recibo el mismo error en Chrome después de pegar el código copiado de jsfiddle.

Si selecciona todo el código de un panel en jsfiddle y lo pega en el editor de texto gratuito Notepad ++, debería poder ver el carácter del problema como un signo de interrogación "?" al final de su código. Elimine este signo de interrogación, luego copie y pegue el código de Notepad ++ y el problema desaparecerá.

14
KurtWM

Tuve el mismo error cuando la cadena multilínea incluía nuevos caracteres de línea (\n). Fusionando todas las líneas en una (eliminando así todos los nuevos caracteres de línea) y enviándolas a un navegador utilizado para resolver. Pero fue muy incómodo para el código.

A menudo no entendía por qué esto era un problema en Chrome hasta que me topé con una declaración que decía que la versión actual del motor de JavaScript en Chrome no admite cadenas multilínea que están entre comillas simples y tienen nuevos caracteres de línea (\n) en ellos. Para que funcione, la cadena multilínea debe estar entre comillas dobles. Cambiando mi código a esto, resolví este problema.

Intentaré encontrar una referencia a un documento estándar o de Chrome que demuestre esto. Hasta entonces, pruebe esta solución y vea si también funciona para usted.

11
Eye

Tuve el mismo error en Chrome. La consola de Chrome me dijo que el error estaba en la primera línea del archivo HTML.

En realidad estaba en el archivo .js. Así que ten cuidado con los tipos de error setValidNou(1060, $(this).val(), 0').

2
Dragos Durlut