Configuré un esquema dinámico para la ruta de navegación en el código JavaScript, y todo está bien. pero cuando se prueba Url en la prueba de resultados enriquecidos de Google , a menudo el tiempo no encuentra un esquema para esto. cuando veo inspeccionar mi página, existía un esquema de la etiqueta del script.
¿Cuál es la razón por la que no funciona bien?
El código JavaScript es este:
<script> var bread = { "@@context": "https://www.schema.org", "@@type": "BreadcrumbList", "itemListElement": [] } var exist = false; $('.breadcrumb li').each(function (index) { var item = {} var href = $(this).find("a").attr('href'); if (href) item["@@id"] = "@Repository.Settings["WebSiteAddress"]" + href // OR location.protocol+"//"+location.host+href; else item["@@id"] = "@Repository.Settings["WebSiteAddress"]" + window.location.pathname item["name"] = $.trim($(this).text()); bread.itemListElement.push({ "@@type": "ListItem", "position": index + 1, item }) exist = true; }); if(exist){ var jsonStrb = JSON.stringify(bread); var s2 = document.createElement("script"); s2.type = "application/ld+json"; s2.id = "BreadcrumbJson"; $("body").append(s2); $('#BreadcrumbJson').append(jsonStrb); } </script>Podría deberse a que el código se ejecuta antes de que el DOM esté listo, por lo que el RRT no lo detecta.
Intente ejecutarlo después, ya que está usando jQuery, envolviendo su código en el método .ready :
$(document).ready(function() { // your code }); Además, asegúrese de estar usando una sintaxis JSON-LD válida. Es decir, las propiedades especiales deben tener un solo carácter "@" (p. ej., "@context" , "@type" ), en lugar de doble ( "@@context" , "@@type" , etc.), aunque el código se ve bien en su captura de pantalla/localhost, a diferencia del fragmento de código separado que ha proporcionado.