Se metto un div in testa e visualizzo: nessuno, che usare JavaScript per visualizzarlo, funzionerà?
Modificare:
Ho delle cose caricate in AJAX. E poiché il mio AJAX cambia la parte "principale" del sito, voglio modificare anche i meta-tag.
Se metto un div in testa e visualizzo: nessuno, che usare JavaScript per visualizzarlo, funzionerà?
Modificare:
Ho delle cose caricate in AJAX. E poiché il mio AJAX cambia la parte "principale" del sito, voglio modificare anche i meta-tag.
Risposte:
Si, puoi farlo.
Ci sono alcuni casi d'uso interessanti: alcuni browser e plugin analizzano i meta elementi e cambiano il loro comportamento per valori diversi.
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Questo può essere modificato da JavaScript. Vedi: una correzione per il bug della scala della vista di iPhone
Alcuni programmi utente (Opera per esempio) usano la descrizione per i segnalibri. Puoi aggiungere contenuti personalizzati qui. Esempio:
<!DOCTYPE html>
<title>Test</title>
<meta name="description" content="this is old">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<button>Change description</button>
<script type='text/javascript'>
$('button').on('click', function() {
// Just replacing the value of the 'content' attribute will not work.
$('meta[name=description]').remove();
$('head').append( '<meta name="description" content="this is new">' );
});
</script>
Quindi, non si tratta solo di motori di ricerca.
keywords
e description
.
document.write
nell'intestazione però, è troppo tardi per cambiarlo una volta che la pagina è stata caricata poiché Skype avrà già alterato il DOM, cosa orribile!
$('meta[property="og:title"]').replaceWith('<meta property="og:title" content="New Title">');
const meta = document.querySelector('meta[name=theme-color]'); meta.setAttribute("content", colors[slideIndex]);
Chrome su Android rileva l'aggiornamento e cambia il colore
Sì.
Ad esempio, per impostare la meta-descrizione:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
attributo, non l' name
attributo, cioèmeta[property="og:title"]
Useresti qualcosa come (con jQuery):
$('meta[name=author]').attr('content', 'New Author Name');
Ma ciò sarebbe per lo più inutile in quanto i meta tag vengono solitamente raschiati solo quando il documento viene caricato, di solito senza eseguire JavaScript.
$('meta[property=og:somestuff]')
, che sospettavo si sarebbe scontrato con la sintassi di selezione jQuery a causa dei due punti.
Puoi cambiare meta con, ad esempio, chiamate jQuery, come queste:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Penso che non importa per ora, dal momento che Google ha detto che lo faranno indicizzare i contenuti Ajax via #!hashes
e _escaped_fragment_
chiamate. E ora possono verificarlo (anche automaticamente, con browser headless, vedere il collegamento "Creazione di istantanee HTML" nella pagina sopra menzionata), quindi penso che sia la strada per i ragazzi SEO hardcore.
È sicuramente possibile utilizzare Javascript per modificare i meta tag della pagina. Ecco un approccio solo Javascript:
document.getElementsByTagName('meta')["keywords"].content = "My new page keywords!!";
document.getElementsByTagName('meta')["description"].content = "My new page description!!";
document.title = "My new Document Title!!";
Ho verificato che Google indicizzi queste modifiche lato client per il codice sopra.
element = collection[name]
sintassi.
i meta-tag fanno parte del dominio e sono accessibili e, suppongo, cambiati, ma i motori di ricerca (i principali consumatori dei meta-tag) non vedranno il cambiamento poiché il javascript non verrà eseguito. quindi a meno che tu non stia cambiando un meta-tag (mi viene in mente l'aggiornamento) che ha implicazioni nel browser, questo potrebbe essere di scarsa utilità?
Dovrebbe essere possibile in questo modo (o usare jQuery come $('meta[name=author]').attr("content");
):
<html>
<head>
<title>Meta Data</title>
<meta name="Author" content="Martin Webb">
<meta name="Author" content="A.N. Other">
<meta name="Description" content="A sample html file for extracting meta data">
<meta name="Keywords" content="JavaScript, DOM, W3C">
</head>
<body>
<script language="JavaScript"><!--
if (document.getElementsByName) {
var metaArray = document.getElementsByName('Author');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Description');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Keywords');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
}
//--></script>
</body>
</html>
$(document).ready(function() {
$('meta[property="og:title"]').remove();
$('meta[property="og:description"]').remove();
$('meta[property="og:url"]').remove();
$("head").append('<meta property="og:title" content="blubb1">');
$("head").append('<meta property="og:description" content="blubb2">');
$("head").append('<meta property="og:url" content="blubb3">');
});
jQuery('meta[property="og:title"]').attr('content', "blubb1");
var metaTag = document.getElementsByTagName('meta');
for (var i=0; i < metaTag.length; i++) {
if (metaTag[i].getAttribute("http-equiv")=='refresh')
metaTag[i].content = '666';
if (metaTag[i].getAttribute("name")=='Keywords')
metaTag[i].content = 'js, solver';
}
Puoi utilizzare una soluzione più semplice e leggera:
document.head.querySelector('meta[name="description"]').content = _desc
semplice add e div atribute a ciascun esempio di meta tag
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
ora come normale cambio div per es. n clic
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
tag di modifica della funzione con jQuery
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Per chiunque cerchi di modificare i meta tag og: title (o qualsiasi altro). Sono riuscito a farlo in questo modo:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
Attenzione che "meta [property =" og: title "]" contiene la parola PROPRIETÀ e non NOME.
No, un div è un elemento del corpo, non un elemento della testa
EDIT: Quindi l'unica cosa che gli SE otterranno è l'HTML di base, non quello modificato ajax.
Sì, è possibile aggiungere metatag con Javascript. Ho fatto nel mio esempio
Android non rispetta la rimozione dei metatag?
Ma non so come cambiarlo se non rimuoverlo. A proposito, nel mio esempio .. quando fai clic sul pulsante "AGGIUNGI", aggiunge rispettivamente il tag e il riquadro di visualizzazione, ma non so come ripristinarlo (rimuovilo, in Android) .. Vorrei che ci fosse firebug per Android quindi Ho visto cosa stava succedendo. Firefox rimuove il tag. se qualcuno ha qualche idea su questo, si prega di notare così nella mia domanda.
avere questo in index
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
avere questo in ajaxfiles og: digitare "og: title" og: descrizione e og: immagine
e aggiungi anche questo
<link rel="origin" href={http://yourPage.com}/>
quindi aggiungi js dopo ajaxCall
FB.XFBML.parse();
Modifica: puoi quindi visualizzare il titolo e l'immagine corretti su Facebook nei documenti txt / php (i miei sono solo chiamati .php come estensioni, ma sono più file txt). Ho quindi i meta tag in questi file e il collegamento all'indice in ogni documento, anche un meta collegamento nel file indice per ogni file secondario.
se qualcuno conosce un modo migliore per farlo, apprezzerei qualsiasi aggiunta :)
Questo sembra funzionare per una piccola app rigidamente impostata in modo geometrico in cui deve essere eseguita su browser mobili e altri con pochi cambiamenti, quindi è necessario trovare lo stato del browser mobile / non mobile e per i cellulari impostare il viewport sulla larghezza del dispositivo. Poiché gli script possono essere eseguiti dall'intestazione, il js sotto nell'intestazione sembra cambiare il metatag per la larghezza del dispositivo prima che la pagina venga caricata. Si potrebbe notare che l'uso di navigator.userAgent è stabilito come sperimentale. Lo script deve seguire la voce del metatag per essere modificato, quindi è necessario scegliere un contenuto iniziale e quindi modificare a determinate condizioni.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
var userAgentHeader = navigator.userAgent ;
var browserIsMobileOrNot = "mobileNOT" ;
if( userAgentHeader.includes( "Mobi" ) ) {
browserIsMobileOrNot = "mobileYES" ;
//document.querySelector('meta[name="viewport"]').setAttribute( "content", "width=device-width, initial-scale=1.0" );
} else {
browserIsMobileOrNot = "mobileNOT" ;
document.querySelector('meta[name="viewport"]').setAttribute( "content", "");
}
</script>
<link rel="stylesheet" href="css/index.css">
. . . . . .