Obtengo este error Uncaught SyntaxError: Unexpected token <

Cuando hago clic en esto:

<a href="javascript:void(0);" onclick="newsGenerator({{link}})" class="blog-more">READ MORE</a>

Esta función se refiere a esto:

function newsGenerator(contents) {
  var newsSelected = window.open("");
  newsSelected.document.write(contents);
}

La {{link}} que ves en "a href" proviene de aquí:

link: "<html><head><title>MyTitle</title></head><body>test</body></html>",

Eso se basa en mi plantilla de esta manera:

template = template.replace("{{link}}", item.link);

Con la función:

var html = ""

assets.forEach(buildTemplate);
document.getElementById("list").innerHTML = html;

function buildTemplate(item) {
  var template = document.getElementById("template").innerHTML;
  template = template.replace("{{name}}", item.name);
  template = template.replace("{{date}}", item.date);
  template = template.replace("{{publisher}}", item.publisher);
  template = template.replace("{{link}}", item.link);
  template = template.replace("{{info}}", item.info);
  template = template.replace("{{img}}", item.img);
  html += template;
}
-2
McMazalf 14 nov. 2017 a las 12:32

2 respuestas

La mejor respuesta

Debe envolver link con comillas simples de escape adicionales. Algo como esto:

link: "\'<html><head><title>MyTitle</title></head><body>test</body></html>\'"

1
MysterX 14 nov. 2017 a las 09:37

Este es el JavaScript que está generando.

newsGenerator(<html><head><title>MyTitle</title></head><body>test</body></html>)

No puede tener un operador < inmediatamente después de ( que inicie una llamada de función.

Parece que estás intentando pasar una cadena.

Los literales de cadena deben delimitarse con comillas o apóstrofos.

(Recuerde que su valor de atributo HTML onclick está delimitado actualmente con comillas).

1
Quentin 14 nov. 2017 a las 09:37