Se eu colocar um div no cabeçalho e exibir: nenhum, do que usar JavaScript para exibi-lo, isso funcionará?
Editar:
Tenho coisas carregadas em AJAX. E como meu AJAX muda a parte "principal" do site, eu quero mudar as metatags também.
Se eu colocar um div no cabeçalho e exibir: nenhum, do que usar JavaScript para exibi-lo, isso funcionará?
Editar:
Tenho coisas carregadas em AJAX. E como meu AJAX muda a parte "principal" do site, eu quero mudar as metatags também.
Respostas:
Sim, você pode fazer isso.
Existem alguns casos de uso interessantes: Alguns navegadores e plug-ins analisam elementos meta e mudam seu comportamento para valores diferentes.
<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">
Este pode ser alterado por JavaScript. Veja: Uma correção para o bug de escala da janela de visualização do iPhone
Alguns agentes de usuário (Opera, por exemplo) usam a descrição para marcadores. Você pode adicionar conteúdo personalizado aqui. Exemplo:
<!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>
Portanto, não se trata apenas de mecanismos de pesquisa.
keywords
e description
.
document.write
no cabeçalho, no entanto, é tarde demais para alterá-lo quando a página for carregada, pois o Skype já terá mutilado o DOM, coisa horrível!
$('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]);
O Chrome no Android detecta a atualização e muda a cor
Sim, ele é.
Por exemplo, para definir a meta-descrição:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
atributo, não o name
atributo, ou seja,meta[property="og:title"]
Você usaria algo como (com jQuery):
$('meta[name=author]').attr('content', 'New Author Name');
Mas isso seria quase inútil, pois as metatags geralmente só são copiadas quando o documento é carregado, geralmente sem a execução de JavaScript.
$('meta[property=og:somestuff]')
, que eu suspeitei que entrariam em conflito com a sintaxe de seleção do jQuery por causa dos dois pontos.
Você pode alterar o meta com, por exemplo, chamadas jQuery, como estas:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Acho que isso importa por enquanto, já que o Google disse que indexará o conteúdo do Ajax por meio de chamadas #!hashes
e _escaped_fragment_
. E agora eles podem verificar isso (mesmo automaticamente, com navegadores headless, veja o link 'Creating HTML Snapshots' na página mencionada acima), então eu acho que é o caminho para os caras de SEO hardcore.
Definitivamente, é possível usar Javascript para alterar as meta tags da página. Aqui está uma abordagem somente 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!!";
Eu verifiquei que o Google indexa essas alterações do lado do cliente para o código acima.
element = collection[name]
sintaxe.
as meta-tags são parte do dom e podem ser acessadas e -i suposto- alteradas, mas os motores de busca (os principais consumidores das meta-tags) não verão a mudança, pois o javascript não será executado. então, a menos que você esteja alterando uma metatag (atualização vem à mente) que tem implicações no navegador, isso pode ser de pouca utilidade?
Deve ser possível assim (ou usar jQuery como $('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';
}
Você pode usar uma solução mais simples e leve:
document.head.querySelector('meta[name="description"]').content = _desc
atributo add e div simples para cada exemplo de metatag
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
agora como mudança div normal para ex. n clique
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
função alterar tags com jQuery
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Para quem está tentando alterar og: meta tags de título (ou qualquer outra). Consegui fazer assim:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
Atenção que o 'meta [property = "og: title"]' contém a palavra PROPERTY, e não NAME.
Não, um div é um elemento do corpo, não um elemento principal
EDIT: Então a única coisa que os SEs vão conseguir é o HTML básico, não o modificado ajax.
Sim, é possível adicionar metatags com Javascript. Eu fiz no meu exemplo
O Android não respeita a remoção de metatag?
Mas, eu não sei como mudar isso além de removê-lo. A propósito, no meu exemplo ... quando você clica no botão 'ADICIONAR', ele adiciona a tag e a janela de visualização muda respectivamente, mas eu não sei como reverter (remova-o, no Android) .. Eu gostaria que houvesse o firebug para Android, então Eu vi o que estava acontecendo. O Firefox remove a tag. se alguém tiver alguma idéia sobre isso, por favor, observe na minha pergunta.
tem isso no índice
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
tenha isso em arquivos ajax og: digite "og: título" og: descrição e og: imagem
e adicione isso também
<link rel="origin" href={http://yourPage.com}/>
em seguida, adicione js após o ajaxCall
FB.XFBML.parse();
Editar: Você pode exibir o título e a imagem corretos no Facebook em documentos txt / php (os meus são apenas nomeados .php como extensões, mas são mais arquivos txt). Em seguida, tenho as metatags nesses arquivos e o link de volta para o índice em cada documento, também um meta link no arquivo de índice para cada subarquivo.
Se alguém souber de uma maneira melhor de fazer isso, agradeceria qualquer adição :)
Isso parece estar funcionando para um pequeno aplicativo com configuração geométrica rígida, onde precisa ser executado em navegadores móveis e outros com poucas alterações, portanto, é necessário localizar o status do navegador móvel / não móvel e para dispositivos móveis definir a janela de visualização para a largura do dispositivo. Como os scripts podem ser executados a partir do cabeçalho, o js abaixo no cabeçalho parece alterar a metatag para a largura do dispositivo Antes de a página carregar. Pode-se notar que o uso de navigator.userAgent é estipulado como experimental. O script deve seguir a entrada da metatag para ser alterado, portanto, é necessário escolher algum conteúdo inicial e, em seguida, alterar em alguma condição.
<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">
. . . . . .