Javascript 将jQuery中的变量插入JSON模式标记
我试图获取元描述并将其内容复制到一些JSON模式标记中。 但我不知道如何让它将变量正确地传递到JSON结构中 我是这么想的:Javascript 将jQuery中的变量插入JSON模式标记,javascript,jquery,json,schema.org,Javascript,Jquery,Json,Schema.org,我试图获取元描述并将其内容复制到一些JSON模式标记中。 但我不知道如何让它将变量正确地传递到JSON结构中 我是这么想的: <script> const desc = $('meta[name=description]').attr("content"); </script> <script type='application/ld+json'> { "@context": "http://www.sc
<script>
const desc = $('meta[name=description]').attr("content");
</script>
<script type='application/ld+json'>
{
"@context": "http://www.schema.org",
"@type": "LocalBusiness",
"name": "BizName",
"telephone": "+1234567890",
"description": "'+desc+'",
....
}
</script>
const desc=$('meta[name=description]').attr(“内容”);
{
“@context”:”http://www.schema.org",
“@type”:“LocalBusiness”,
“名称”:“BizName”,
“电话”:“+1234567890”,
“说明”:“'+desc+'”,
....
}
我知道它不会将desc
变量直接传递到JSON标记中,因为它位于单独的脚本标记中。我只是不知道如何将两者结合起来,使其正确工作。希望这是有意义的,并且可以接受任何建议。你不能–它是静态JSON标记,而不是动态JavaScript
从技术上讲,您可以使用所有模式JSON动态地注入一个全新的
标记,但JavaScript可能*不会通过软件解析页面中的JSON+LD数据来解释。首先构建模式,然后将其注入
const desc=$('meta[name=description]').attr(“content”).toString();
变量模式={
“@context”:”http://www.schema.org",
“@type”:“LocalBusiness”,
“名称”:“BizName”,
“电话”:“+1234567890”,
“描述”:描述,
....
}
var script=document.createElement('script');
script.type=“应用程序/ld+json”;
script.text=JSON.stringify(模式);
document.querySelector('body').appendChild(脚本);
它将进行解析。我就是这样做的。一些消费者可能会解析它,但不一定是所有消费者。谷歌是这方面唯一重要的消费者,谷歌接受了。假设页面(和元描述)是由后端生成的,如果OP只需要读取元描述来生成LD+JSON,最好还是在后台完成。你做了很多假设。你使用过结构化数据吗?或者这都是理论上的吗?看起来我可以用它来构建模式,但它看起来不是注入元内容,而是在描述中生成'+desc+'
。不确定我是否错过了什么?啊,好的。无需连接desc
,因为var模式
是一个javascript对象。我编辑了答案以反映这一点。啊,好的。是的,我有点想,但我想以防万一。谢谢似乎正在工作。您能提供一个不依赖jQuery的版本吗?希望使用您的解决方案,但需要一个不需要CDN调用的“独立”版本。@JayGray-我认为如果您使用document.querySelector(“meta[name='description']”)。getAttribute(“content”)。toString代码>这可能有用。不过我还没有测试过。