我的HTML
文档JSON-LD
发布如下:
<script type="application/ld+json">
{
"@context": {
"gs1": "http://vocab.gs1.org/v1#",
"xsd":"http://www.w3.org/2001/XMLSchema#"
},
"@id": "retailer:12345",
"@type": "gs1:Offering",
"gtin13":"5011476100111",
"gs1:hasPrice": {
"gs1:price": "2.49",
"gs1:priceTypeCode": "USD",
"@type":"gs1:Price"
}
}
</script>
这可以按预期工作(意味着它使用Google Structured Data Testing Tool
和Structured Data Linter
有效且可见
使用Same Origin
(不 Cross Origin
),如何将内联JSON-LD
移动到文件中?
这种方法失败了:
<script type="application/ld+json" src="_URL_.json"></script>
这种方法也失败了:
<script type="application/ld+json">
$(document).ready(function(){
$.ajax({
url: "_URL_.json",
dataType: 'json',
});
});
</script>
如何更正我的方法来创建一个解决方案,其中JSON-LD在我的服务器上,而不是在HTML中?
接下来,假设我的网站已启用CORS。
如何以JSONP格式发布JSON-LD结构,以便其他域可以订阅JSON-LD数据?
答案 0 :(得分:2)
Google Structured Data Testing Tool或Structured Data Linter等工具不支持外部参考。可能还有许多JSON-LD的消费者。
如果您仍想这样做,则必须使用link
instead of a script
element,因为script
元素可能没有src
function s() {
var link = document.createElement('a');
link.download = "test.gif";
link.href = 'http://192.168.20.22/mantis/images/mantis_logo.gif';
document.body.appendChild(link);
link.click();
}
属性。
动态包含JSON-LD的变体可能适用于为此目的支持JavaScript的消费者。 (data block;也许只有他们的测试工具无法使用它。)
答案 1 :(得分:1)
您可以动态生成脚本标记:
<script>
// do some ajax, get the JSON-LD as `data` and then...
$.ajax(...).done(function(data) {
var el = document.createElement('script');
el.type = 'application/ld+json';
el.text = JSON.stringify(data);
document.querySelector('body').appendChild(el);
});
</script>