Если я помещу div в заголовок и отобразлю: none, чем использовать JavaScript для его отображения, это сработает?
Редактировать:
У меня все загружено в AJAX. И поскольку мой AJAX изменяет «основную» часть сайта, я хочу также изменить мета-теги.
Если я помещу div в заголовок и отобразлю: none, чем использовать 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, к ним можно получить доступ и изменить -i guess-, но поисковые системы (основные потребители мета-тегов) не увидят изменений, поскольку 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
простой атрибут add и div для каждого примера метатега
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
теперь, как и обычное изменение div, например. п щелчок
<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 [property = "og: title"]' содержит слово PROPERTY, а не NAME.
Нет, div - это основной элемент, а не заголовок.
РЕДАКТИРОВАТЬ: Тогда единственное, что получат SE, - это базовый HTML, а не модифицированный ajax.
Да, можно добавлять метатеги с помощью Javascript. Я сделал в своем примере
Android не соблюдает удаление метатегов?
Но я не знаю, как это изменить, кроме как удалить. Кстати, в моем примере ... когда вы нажимаете кнопку «ДОБАВИТЬ», он добавляет тег и соответственно изменяется область просмотра, но я не знаю, как вернуть его обратно (удалить его в Android). Я бы хотел, чтобы для Android был firebug, поэтому Я видел, что происходит. Firefox удаляет тег. Если у кого-то есть идеи по этому поводу, обратите внимание на мой вопрос.
иметь это в индексе
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
иметь это в ajaxfiles og: type "og: title" og: description и og: image
и добавьте это также
<link rel="origin" href={http://yourPage.com}/>
затем добавьте js после ajaxCall
FB.XFBML.parse();
Изменить: затем вы можете отобразить правильный заголовок и изображение в facebook в txt / php douments (мои просто называются .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">
. . . . . .