Якщо я покладу діва в голову і покажу: жодне, ніж використовувати JavaScript для його відображення, чи буде це спрацьовувати?
Редагувати:
У мене в AJAX завантажені речі. І коли мій AJAX змінює "основну" частину сайту, я також хочу змінити мета-теги.
Якщо я покладу діва в голову і покажу: жодне, ніж використовувати JavaScript для його відображення, чи буде це спрацьовувати?
Редагувати:
У мене в AJAX завантажені речі. І коли мій AJAX змінює "основну" частину сайту, я також хочу змінити мета-теги.
Відповіді:
Так, ви можете це зробити.
Є кілька цікавих випадків використання: Деякі браузери та плагіни розбирають металеві елементи та змінюють свою поведінку на різні значення.
<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">
Це може бути змінено JavaScript. Див.: Виправлення помилки зі шкалою перегляду iPhone
Деякі агенти користувачів (наприклад, Opera) використовують опис для закладок. Тут ви можете додати персоналізований вміст. Приклад:
<!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>
Отже, справа не лише в пошукових системах.
keywordsі description.
document.writeдопомогою заголовка, хоча це занадто пізно змінити його, коли сторінка буде завантажена, оскільки Skype вже заблукав DOM, жахлива річ!
$('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 на Android виявляє оновлення та змінює колір
Так.
Наприклад, щоб встановити метаопис:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
propertyатрибут, а не nameатрибут, тобтоmeta[property="og:title"]
Ви б використовували щось на кшталт (з jQuery):
$('meta[name=author]').attr('content', 'New Author Name');
Але це було б в основному безглуздо, оскільки мета-теги, як правило, розкреслюються лише під час завантаження документа, як правило, без виконання JavaScript.
$('meta[property=og:somestuff]'), напевно, я підозрював, що він зіткнеться з синтаксисом вибору jQuery через двокрапки.
Ви можете змінити мета за допомогою, наприклад, дзвінків jQuery, як-от:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Я думаю, що це вже має значення, оскільки Google сказав, що вони будуть індексувати вміст ajax через #!hashesта _escaped_fragment_дзвінки. І тепер вони можуть перевірити це (навіть автоматично, без браузерних браузерів, дивіться посилання "Створення HTML-знімків" на згадуваній сторінці), тож я думаю, що це спосіб для жорстких хлопців SEO.
Однозначно можна використовувати Javascript для зміни метатегів сторінки. Ось лише підхід 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!!";
Я переконався, що Google індексує ці зміни на стороні клієнта для наведеного вище коду.
element = collection[name]синтаксис.
метатеги є частиною dom і до них можна отримати доступ і - я здогадуюсь - змінити, але пошукові системи (основні споживачі метатегів) не побачать зміни, оскільки javascript не буде виконаний. тож якщо ви не змінюєте метатег (оновлення приходить на думку), що має наслідки для браузера, це може не принести користі?
Це повинно бути можливо таким (або використовувати jQuery як $('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';
}
Можна скористатися більш простим і легшим рішенням:
document.head.querySelector('meta[name="description"]').content = _desc
просте додавання та поділ для кожного прикладу метатегів
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
тепер як звичайна зміна діва для колишнього. n клацання
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
функція зміни тегів за допомогою jQuery
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Для тих, хто намагається змінити og: title мета-тегів (або будь-яких інших). Мені вдалося це зробити так:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
Зверніть увагу, що 'meta [властивість = "og: title"]' містить слово ВЛАСНІСТЬ, а не ІМ'Я.
Ні, дів - це елемент тіла, а не голова
EDIT: Тоді єдине, що збираються отримати SE, - це базовий HTML, а не модифікований Ajax.
Так, можна додавати метатеги за допомогою Javascript. Я зробив на своєму прикладі
Android не поважає видалення метатегів?
Але я не знаю, як змінити його, а потім видалити його. До речі, у моєму прикладі .. коли ви натискаєте кнопку "ДОБАВИТИ", вона додає тег і вікно перегляду відповідно змінюється, але я не знаю, як повернути його назад (видаліть його в Android). Я бачив, що відбувається. Firefox видаляє тег. якщо у когось є якісь ідеї щодо цього, будь ласка, зверніть увагу на це в моєму запитанні.
мають це в індексі
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
мати це в ajaxfiles og: введіть "og: title" og: опис та og: image
і додайте також це
<link rel="origin" href={http://yourPage.com}/>
потім додайте js після ajaxCall
FB.XFBML.parse();
Редагувати: Потім ви можете відобразити правильний заголовок та зображення у facebook у форматі txt / php (мої так само названі .php як розширення, але це більше файли txt). Потім у цих файлах є метатеги, і посилання назад до індексу в кожному документі, а також метапосилання в індексному файлі для кожного підфіла.
якщо хтось знає кращий спосіб зробити це, я буду вдячний за будь-які доповнення :)
Здається, це працює для трохи жорстко геометрично встановленого додатка, де він повинен працювати як на мобільних, так і на інших веб-переглядачах з невеликими змінами, тому потрібно знайти статус браузера для мобільних / немобільних пристроїв та для мобільних пристроїв, встановивши вікно перегляду на ширину пристрою. Оскільки сценарії можуть бути запущені із заголовка, нижче js у заголовку, здається, змінює метатеги на ширину пристрою Перед завантаженням сторінки. Можна зазначити, що використання navigator.userAgent визначено як експериментальне. Сценарій повинен відповідати запису мета-тегів, який потрібно змінити, тому потрібно вибрати якийсь початковий вміст, а потім змінити за певної умови.
<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">
. . . . . .