使用JavaScript添加JSON-LD

时间:2018-07-17 08:10:24

标签: javascript json-ld

我正在尝试使用JSON-LD实现结构数据。我正在做的是使用jQuery动态获取内容并制作JSON格式并附加在head元素内。

<script id="dynamicJSONLD"></script>
$(document).ready(function(){
var product_name = $(.product-pg .product-name).text();
data = {
               "@context": "https://schema.org",
               "@type": "Product",
               "url": "https://www.example.com/productone",
               "name": product_name  
            };

//creating the script element and storing the JSON-LD

var script = document.createElement('script');
script.type = "application/ld+json";
script.innerHTML = JSON.stringify(data);
document.getElementsByTagName('head')[0].appendChild(script);

//OR

//storing the JSON-LD using ID
$("#dynamicJSONLD").html(JSON.stringify(data));
});

两种方法(创建script元素并存储JSON-LD /使用ID存储JSON-LD)是否都有效?最好的实现方式是哪种?另外,Google是否会使用JavaScript像上述一样动态抓取动态添加的JSON-LD?

2 个答案:

答案 0 :(得分:1)

是的,Google可以抓取动态添加的JSON-LD,如主题this Google article中所述:

  

当动态注入Google时,Google可以读取JSON-LD数据   进入页面的内容,例如通过JavaScript代码或嵌入   内容管理系统中的窗口小部件。

这两种方法肯定都能使用,但是如果要使用ID存储JSON-LD,则需要在脚本中添加所需的 type 属性:

<script id="dynamicJSONLD" type="application/ld+json"></script>

添加完标记后,请务必使用Google's Structured Data Testing Tool对其进行测试!

答案 1 :(得分:0)

我用

var Client = require("node-rest-client").Client;
var client = new Client();
var args = {
    headers: { "Accept": "application/ld+json, */*;q=0.5" }
 };

client.get(url+query,args, function (data, response) {
    ......
}