2013-02-15 11 views
8

Sto creando i meta-tag HTML in modo dinamico utilizzando la funzione seguente (GWT). Ci vuole 1 secondo per avere questo sul DOM. Funziona bene tranne che per Facebook. Quando condivido un link dal mio web, il raschietto ottiene i meta-tag che sono nell'HTML: nessuno. Come posso risolvere questo?Facebook raschietto non carica i meta-tag dinamici

/** 
* Include the HTML attributes: title, description and keywords (meta tags) 
*/ 
private void createHTMLheader(MyClass thing) { 

    String title=thing.getTitle(); 
    String description=thing.getDescription(); 

    Document.get().setTitle(title); 

    MetaElement metaDesc = Document.get().createMetaElement(); 
    metaDesc.setName("description"); 
    metaDesc.setContent(description); 
    NodeList<Element> nodes = Document.get().getElementsByTagName("head"); 
    nodes.getItem(0).appendChild(metaDesc); 
} 

Questo è il risultato HEAD sul DOM. Il titolo aaaa e la meta descrizione sono stati caricati in modo dinamico. (Grazie a CBroe per il suggerimento). Nella funzionalità "visualizza sorgente", questi tag dinamici non vengono visualizzati (solo sugli strumenti di sviluppo - visualizza dom).

<head> 
    <title>aaaa</title> 
    <meta content="text/html; charset=utf-8" http-equiv="content-type"> 
    <meta name="description" content="My description"> 

    <script language="javascript" type="text/javascript" src="dialective/dialective.nocache.js"></script><script defer="defer">dialective.onInjectionDone('dialective')</script> 

</head> 

L'HTML originale non ha tag TITLE o META-DESCRIPTION.

+1

Puoi mostrare l'HTML che questo effettivamente genera? –

+0

Grazie. Appena aggiunto il – Arturo

+1

Stai cercando di aggiungere tag HTML con un'app Java o qualcosa del genere? Il raschietto di Facebook non eseguirà il tuo codice Java. Vedrà esattamente ciò che il tuo server web sta inviando. –

risposta

11

Il raschietto di Facebook può vedere solo i tag <meta> inclusi nella risposta HTML originale dal server. Non è "abbastanza intelligente" per eseguire codice JavaScript, plugin Flash, applet Java o qualsiasi altra cosa che potrebbe essere eseguita da un browser completo.

È necessario generare questi tag <meta> sul server utilizzando un framework lato server.

Inoltre, Facebook fornisce un utile testing tool per assicurarsi che la pagina esponga i meta tag appropriati. Potrebbe essere necessario aggiungere anche tag OpenGraph, ad esempio og:title e og:description.

+0

Ciao Mike, il punto che hai fatto riguardo al raschietto di Facebook è solo vedere l'origine dell'HTML è quello che sono venuto a trovare visto che ho lo stesso problema dell'OP. Comunque ho capito cosa sarebbe successo se avessi caricato AddThis usando $ .getScript dopo aver apportato modifiche al DOM. Secondo la mia teoria, il modo in cui FB arriverebbe solo a raggirare con il nuovo DOM. Ma questo non è possibile? Temo che quando si fa scattare AddThis e si faccia clic su FB, l'URL viene passato a FB e quindi esegue un raschiamento indipendente dell'URL della condivisione che non ha i meta tag modificati da javascript. Avresti qualche idea su questo? Daniel. –

-1

Per qualche ragione, la descrizione meta non è stata caricata con la funzione di cui sopra ...

Questo perché si è solo la creazione di un nuovo MetaElement - ma si fa nulla con esso .

Devi aggiungere al documento, più specifico al suo elemento head.

Qualcosa di simile

getHead().appendChild(metaDesc) 

manca.

Problemi correlati