it-swarm.com.de

JS-Aufruf gibt mir einen Textwert anstelle eines HTML-Links für die Microdata-Eigenschaft

Ich versuche, die Buch-URL mithilfe von Mikrodaten aus einem Link zu extrahieren. Das Format wird in Schema.org angegeben.

Hier ist mein HTML:

<div class="col-sm-4 col-md-3" itemscope itemtype="http://schema.org/Book">
                <div class="thumbnail">
                    <img src="{{ book.thumbnailurl }}" itemprop="thumbnailUrl" style="width: 100px;height: 200px;">
                    <div class="caption">
                        <h4><span itemprop="name">{{ book.name }}</span> - <span itemprop="author">{{ book.author }}</span></h4>
                        <p><span itemprop="about"> {{ book.about }}</span></p>
                        <p> 

                                <a href="{{ book.url }}" itemprop="url" onclick="trackOutboundLink(‘{{ book.name }}’);">
                                  <button type="button" class="btn btn-default btn-md">
                                    <span class="glyphicon glyphicon-book"></span>Read
                                  </button>
                                </a>

                        </p>
                    </div>
                </div>
             </div>

Wenn ich Googles Tool zum Testen von Snippets verwende, gibt die JSON-API book als HTML-Link zurück. Wenn ich den Aufruf in JavaScript durchführe, ist der Wert von url Text ("Read").

Was vermisse ich?

1
Joesoc

Ok, endlich nach vielem Graben habe ich die Antwort.

Die Hauptursache ist folgende: Die Google CSE (Custom Search Engine) verwendet den Mikrodaten-Eigenschaftswert nicht als href-Attribut des HTML-Elements "a". Der untergeordnete Textinhalt wird für das HTML-Element "a" verwendet.

Die Google CSE kann die href aus einem "Link" -HTML-Element konsumieren.

Deshalb.

 <a href="{{ book.url }}" itemprop="url" onclick="trackOutboundLink(‘{{ book.name }}’);">

wird nicht funktionieren.

 <link itemprop="url" href="{{ book.url }}">
 <a href="{{ book.url }}" onclick="trackOutboundLink(‘{{ book.name }}’);">

funktioniert.

1
Joesoc