问题
Here is the code that shows success in console log but fails when tested with Google's Structured Data Testing Tool or with G+ share button. The original values remain. In this case "jack" never updates to "jill".
var newName= "jill"
$("h1").attr('itemprop','name').html(newName);
Here is the Microdata:
<body itemscope itemtype="http://schema.org/Blog">
<div style="display:none;">
<h1 itemprop="name">jack</h1>
<img itemprop="image" src="http://somehewhere.com/something.png" />
<p itemprop="description">some text</p>
</div>
As you can see, just trying to change the value of "jack" to "jill".
回答1:
The html() method cannot be used on the itemprop attribute. You need to apply it to just the h1 tag instead:
$("h1[itemprop=name]").html(newName);
or since newName is simple text:
$("h1[itemprop=name]").text(newName);
回答2:
That's because GoogleBot (and all the others, for that matter) doesn't execute (all) javascript. You won't have any success setting or changing microdata properties by any client side script.
回答3:
Changing microdata values was no sense, since as dwtm.ts said, bots don't execute javascript and parse only source code downloaded directly when they get the pages. You should use "fetch as googlebot" test tool from GWT to check how search bots "read" your page.
来源:https://stackoverflow.com/questions/13441761/is-it-possible-to-change-microdata-itemprop-with-jquery