Başa bir div koyarsam ve display: none, onu görüntülemek için JavaScript kullanmaktan daha iyidir, bu çalışır mı?
Düzenle:
AJAX'a yüklediğim şeyler var. AJAX'ım sitenin "ana" bölümünü değiştirirken, meta etiketleri de değiştirmek istiyorum.
Başa bir div koyarsam ve display: none, onu görüntülemek için JavaScript kullanmaktan daha iyidir, bu çalışır mı?
Düzenle:
AJAX'a yüklediğim şeyler var. AJAX'ım sitenin "ana" bölümünü değiştirirken, meta etiketleri de değiştirmek istiyorum.
Yanıtlar:
Evet, bunu yapabilirsiniz.
Bazı ilginç kullanım durumları var: Bazı tarayıcılar ve eklentiler meta öğeleri ayrıştırır ve farklı değerler için davranışlarını değiştirir.
<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">
Bu, JavaScript ile değiştirilebilir. Bkz: iPhone görüntü alanı ölçek hatası için bir düzeltme
Bazı kullanıcı aracıları (örneğin Opera) yer imleri için açıklamayı kullanır. Buraya kişiselleştirilmiş içerik ekleyebilirsiniz. Misal:
<!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>
Yani bu sadece arama motorları ile ilgili değil.
keywords
ve description
.
document.write
başlıkta yapabilirsiniz, ancak sayfa yüklendikten sonra değiştirmek için çok geç, çünkü Skype DOM'u zaten bozmuş olacak, korkunç bir şey!
$('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]);
Android'de Chrome güncellemeyi algılar ve rengini değiştirir
Evet öyle.
Örneğin meta açıklamayı ayarlamak için:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
özniteliği değil, name
özniteliği sorgulamanız gerekecek , yanimeta[property="og:title"]
(JQuery ile) gibi bir şey kullanırsınız:
$('meta[name=author]').attr('content', 'New Author Name');
Ancak, meta etiketler genellikle yalnızca belge yüklendiğinde, genellikle JavaScript çalıştırılmadan kazındığından, bu çoğunlukla anlamsız olacaktır.
$('meta[property=og:somestuff]')
nokta üst üste nedeniyle jQuery seçim sözdizimi ile çakışacağından şüphelendiğim gibi seçicilerle bile çalışıyor .
Metayı, örneğin jQuery çağrılarıyla değiştirebilirsiniz, örneğin şunlar:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Ben düşünüyorum yapar google beri, şimdilik olsun dedi onlar endeks ajax üzerinden içerik olacak o #!hashes
ve _escaped_fragment_
aramaları. Ve şimdi bunu doğrulayabilirler (başsız tarayıcılarda otomatik olarak bile, yukarıda bahsedilen sayfadaki 'HTML Anlık Görüntüleri Oluşturma' bağlantısına bakın), bu yüzden sert SEO uzmanları için bir yol olduğunu düşünüyorum.
Sayfanın meta etiketlerini değiştirmek için kesinlikle Javascript kullanmak mümkündür. İşte yalnızca Javascript yaklaşımı:
document.getElementsByTagName('meta')["keywords"].content = "My new page keywords!!";
document.getElementsByTagName('meta')["description"].content = "My new page description!!";
document.title = "My new Document Title!!";
Google'ın yukarıdaki kod için bu istemci tarafı değişikliklerini dizine eklediğini doğruladım.
element = collection[name]
Sözdizimi konusunda beni bilgilendirdiğiniz için teşekkürler .
meta etiketler, alanın bir parçasıdır ve erişilebilir ve tahminen değiştirilebilir, ancak arama motorları (meta etiketlerin ana tüketicileri), javascript çalıştırılmayacağı için değişikliği görmez. Bu yüzden, tarayıcıda etkileri olan bir meta etiketi (yenileme akla geliyor) değiştirmedikçe, bunun pek bir faydası olmayabilir.
Bunun gibi mümkün olmalıdır (veya jQuery gibi kullanın $('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';
}
Daha basit ve daha hafif bir çözüm kullanabilirsiniz:
document.head.querySelector('meta[name="description"]').content = _desc
her meta etiket örneğine basit ekle ve böl
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
şimdi ex için normal div değişikliği gibi. n tıklayın
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
jQuery ile işlev değişikliği etiketleri
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Og: title meta etiketlerini (veya başka herhangi birini) değiştirmeye çalışan herkes için. Bunu şu şekilde yapmayı başardım:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
'Meta [property = "og: title"]', NAME kelimesini değil PROPERTY kelimesini içerdiğine dikkat edin.
Hayır, div bir gövde öğesidir, başlık öğesi değildir
DÜZENLEME: O zaman SE'lerin alacağı tek şey, ajax'ın değiştirdiği değil, temel HTML olacaktır.
Evet, Javascript ile meta etiketler eklemek mümkündür. Örneğimde yaptım
Android, meta etiket kaldırmaya saygı göstermiyor mu?
Ancak, kaldırdıktan sonra nasıl değiştireceğimi bilmiyorum. Btw, benim örneğimde .. 'EKLE' butonuna tıkladığınızda sırasıyla etiket ve görüntü alanı değişiyor ancak onu nasıl geri alacağımı bilmiyorum (Android'de kaldırın) .. Keşke Android için firebug olsaydı Neler olduğunu gördüm. Firefox etiketi kaldırır. Bu konuda herhangi bir fikri olan varsa, lütfen soruma dikkat edin.
bunu dizinde bulundur
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
bunu ajaxfiles içinde bulundurun og: type "og: title" og: description ve og: image
ve bunu da ekle
<link rel="origin" href={http://yourPage.com}/>
ardından ajaxCall'dan sonra js ekleyin
FB.XFBML.parse();
Düzenleme: Daha sonra txt / php douments içinde facebook'a doğru başlığı ve resmi görüntüleyebilirsiniz (benimki .php uzantı olarak adlandırılır, ancak daha fazla txt dosyasıdır). Daha sonra bu dosyalarda meta etiketlere ve her belgedeki dizine geri bağlantı, ayrıca her alt dosya için dizin dosyasında bir meta bağlantıya sahibim ..
Bunu yapmanın daha iyi bir yolunu bilen varsa, herhangi bir eklemeyi takdir ederim :)
Bu, hem mobil hem de diğer tarayıcılarda çok az değişiklikle çalışması gereken katı geometrik olarak ayarlanmış bir uygulama için çalışıyor gibi görünüyor, bu nedenle mobil / mobil olmayan tarayıcı durumunu bulmak ve mobil cihazlar için görüntü alanını cihaz genişliğine ayarlamak gerekiyor. Komut dosyaları başlıktan çalıştırılabildiğinden, başlıktaki aşağıdaki js, sayfa yüklenmeden önce aygıt genişliği için meta etiketi değiştiriyor gibi görünüyor. Navigator.userAgent kullanımının deneysel olarak öngörüldüğü not edilebilir. Komut dosyası, değiştirilecek meta etiket girişini takip etmelidir, bu nedenle bir miktar başlangıç içeriği seçmeli ve ardından bazı koşullarda değiştirilmelidir.
<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">
. . . . . .