Jeśli umieszczę element div w nagłówku i wyświetlę: none, niż użyj JavaScript, aby go wyświetlić, czy to zadziała?
Edytować:
Mam rzeczy załadowane w AJAX. Ponieważ mój AJAX zmienia „główną” część witryny, chcę również zmienić metatagi.
Jeśli umieszczę element div w nagłówku i wyświetlę: none, niż użyj JavaScript, aby go wyświetlić, czy to zadziała?
Edytować:
Mam rzeczy załadowane w AJAX. Ponieważ mój AJAX zmienia „główną” część witryny, chcę również zmienić metatagi.
Odpowiedzi:
Tak, możesz to zrobić.
Istnieje kilka interesujących przypadków użycia: niektóre przeglądarki i wtyczki analizują elementy meta i zmieniają ich zachowanie dla różnych wartości.
<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">
Ten można zmienić za pomocą JavaScript. Zobacz: Poprawka dotycząca błędu skali rzutni iPhone'a
Niektóre programy użytkownika (na przykład Opera) używają opisu zakładek. Tutaj możesz dodać spersonalizowane treści. Przykład:
<!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>
Nie chodzi więc tylko o wyszukiwarki.
keywords
i description
.
document.write
nagłówkiem, jest za późno, aby to zmienić po załadowaniu strony, ponieważ Skype już zniekształcił DOM, okropna rzecz!
$('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 na Androida wykrywa aktualizację i zmienia kolor
Tak to jest.
Np. Aby ustawić opis meta:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
atrybut, a nie name
atrybut, np.meta[property="og:title"]
Użyłbyś czegoś takiego (z jQuery):
$('meta[name=author]').attr('content', 'New Author Name');
Byłoby to jednak w większości bezcelowe, ponieważ metatagi są zwykle pobierane tylko wtedy, gdy dokument jest ładowany, zwykle bez wykonywania kodu JavaScript.
$('meta[property=og:somestuff]')
, które podejrzewałem, kolidowałoby ze składnią selekcji jQuery z powodu dwukropka.
Możesz zmienić meta, na przykład za pomocą wywołań jQuery, takich jak te:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Myślę, że na razie ma to znaczenie, ponieważ Google powiedział , że zaindeksuje zawartość ajax za pośrednictwem #!hashes
i _escaped_fragment_
wywołań. A teraz mogą to zweryfikować (nawet automatycznie, w przeglądarkach bezgłowych, patrz link „Tworzenie migawek HTML” na wspomnianej powyżej stronie), więc myślę, że to sposób dla zapalonych specjalistów od SEO.
Zdecydowanie jest możliwe użycie JavaScript do zmiany metatagów strony. Oto podejście tylko w 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!!";
Po sprawdzeniu, że Google indeksuje te zmiany po stronie klienta dla powyższego kodu.
element = collection[name]
składni.
meta-tagi są częścią domeny i można do nich uzyskać dostęp i zmienić domyślną opcję -i, ale wyszukiwarki (główni użytkownicy metatagów) nie zobaczą zmiany, ponieważ javascript nie zostanie wykonany. więc jeśli nie zmieniasz metatagu (przychodzi na myśl odświeżenie), co ma wpływ na przeglądarkę, może to być mało przydatne?
Powinno to być możliwe w ten sposób (lub użyj jQuery jak $('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';
}
Możesz użyć prostszego i lżejszego rozwiązania:
document.head.querySelector('meta[name="description"]').content = _desc
proste dodawanie i oznaczanie div do każdego przykładu metatagu
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
teraz jak normalna zmiana div na ex. n kliknij
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
tagi zmiany funkcji za pomocą jQuery
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Dla każdego, kto próbuje zmienić metatagi og: title (lub jakiekolwiek inne). Udało mi się to zrobić w ten sposób:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
Zwróć uwagę, że „meta [property =" og: title "]” zawiera słowo PROPERTY, a nie NAME.
Nie, element div jest elementem body, a nie elementem head
EDYCJA: Wtedy jedyne, co otrzymają SE, to podstawowy HTML, a nie zmodyfikowany przez Ajax.
Tak, możliwe jest dodawanie metatagów za pomocą JavaScript. Zrobiłem w moim przykładzie
Android nie respektuje usuwania metatagów?
Ale nie wiem, jak to zmienić, a potem usunąć. Btw, w moim przykładzie ... po kliknięciu przycisku „DODAJ” dodaje tag i zmienia się odpowiednio widoczny obszar, ale nie wiem, jak go cofnąć (usunąć, w Androidzie) .. Chciałbym, aby był firebug dla Androida, więc Widziałem, co się dzieje. Firefox usuwa tag. jeśli ktoś ma jakieś pomysły na ten temat, proszę zanotować to w moim pytaniu.
mają to w indeksie
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
mają to w plikach ajaxfiles og: type "og: title" og: description i og: image
i dodaj to również
<link rel="origin" href={http://yourPage.com}/>
następnie dodaj js po ajaxCall
FB.XFBML.parse();
Edycja: Możesz następnie wyświetlić prawidłowy tytuł i obraz na Facebooku w douments txt / php (moje mają po prostu nazwy .php jako rozszerzenia, ale są to bardziej pliki txt). Mam wtedy metatagi w tych plikach i łącze z powrotem do indeksu w każdym dokumencie, a także łącze meta w pliku indeksu dla każdego podpliku.
jeśli ktoś zna lepszy sposób na zrobienie tego, byłbym wdzięczny za wszelkie dodatki :)
Wydaje się, że działa to w przypadku małej sztywno geometrycznie ustawionej aplikacji, w której musi działać zarówno w przeglądarkach mobilnych, jak i innych z niewielkimi zmianami, więc konieczne jest znalezienie stanu przeglądarki mobilnej / niemobilnej oraz ustawienie obszaru roboczego na szerokość urządzenia w przypadku telefonów komórkowych. Ponieważ skrypty można uruchamiać z nagłówka, poniższy js w nagłówku wydaje się zmieniać metatag dla device-width przed załadowaniem strony. Można zauważyć, że użycie navigator.userAgent jest określone jako eksperymentalne. Skrypt musi podążać za wpisem metatagu, aby został zmieniony, więc należy wybrać jakąś początkową zawartość, a następnie zmienić pod pewnymi warunkami.
<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">
. . . . . .