gpt4 book ai didi

json - 如何在需要等待内容加载的动态页面上使用 JSON-LD 添加结构化数据?

转载 作者:行者123 更新时间:2023-12-04 00:56:06 24 4
gpt4 key购买 nike

我正在开发一个网站,我想将结构化数据添加到详细页面。
问题是我需要在知道要添加到 JSON-LD 脚本中的内容之前请求数据。

我使用 Parse 作为后端。我还尝试四处寻找有关如何实现这一目标的教程,但似乎无法动态添加 JSON-LD。

我真的希望有人能帮助我! :)

编辑:

我需要放入 JSON-LD 的数据的响应是在 DOM 准备好之后出现的。这种情况下的模式是什么?

我有一个项目列表,当单击其中一个时,我必须打开一个详细信息页面,我必须先加载该页面,但在加载内容后,我想通过 JSON-LD 提供结构化数据。

我刚开始,我发现很难解决这个问题。

编辑 2:

这是我的实际实现:

在 HTML 中:

<body>
// my html page code
...
<script type="text/javascript">
loadDetailPageContent();
</script>
</body>

在JS中:
function loadDetailPageContent() {
// Calling the method here is too early because I don't have info
//writeData();
createDetailPage();
}

function createDetailPage() {
var recipe = Parse.Object.extend("Recipe");
var query = new Parse.Query(recipe);
query.equalTo("objectId", myId);
query.first({
success: function(result) {
// Calling the method here would be perfect
writeData();
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}

function writeData() {
var script = document.createElement('script');
script.type = 'application/ld+json';
script.text = JSON.stringify({
"@context": "http://schema.org",
"@type": "Recipe",
"name": "My recipe name"
});
document.querySelector('head').appendChild(el);
}

如您所见,writeData() 方法在两个地方被调用。如果我在开始时立即调用它,没有问题,并且使用 Google 结构化数据测试工具,我可以跟踪我需要的结构化数据。问题在于,那时我没有创建结构化数据的信息,因为我需要等待 Parse 的响应。

当我在成功回调中调用该方法时,测试工具将无法再检索数据:(

最佳答案

http://jsfiddle.net/c725wcn9/2/embedded

您将需要检查 DOM 以检查它是否有效。需要jQuery。

$(document).ready(function(){
var el = document.createElement('script');
el.type = 'application/ld+json';
el.text = JSON.stringify({ "@context": "http://schema.org", "@type": "Recipe", "name": "My recipe name" });

document.querySelector('head').appendChild(el);
});

您的代码包含变量名称 script但附加了变量 el<head>反而。还删除了使用 JSON-LD playground 检查的 JSON 字符串中的换行符。 .

关于json - 如何在需要等待内容加载的动态页面上使用 JSON-LD 添加结构化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com