Можно ли использовать JavaScript для изменения метатегов на странице?

Если я поместил div в голову и дисплей: none, чем использовать JavaScript для его отображения, будет ли это работать?

Edit:

У меня есть материал, загруженный в AJAX. И поскольку мой AJAX меняет "основную" часть сайта, я хочу также изменить метатеги.

Ответ 1

Да, вы можете это сделать.

Есть несколько интересных вариантов использования: некоторые браузеры и плагины анализируют мета-элементы и меняют свое поведение для разных значений.

Примеры

Skype: выключить парсер телефона

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">

iPhone: выключить парсер телефона

<meta name="format-detection" content="telephone=no">

Рамка Google Chrome

<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>

Итак, это не только поисковые системы.

Ответ 2

Да, это так.

например. для установки мета-описания:

document.querySelector('meta[name="description"]').setAttribute("content", _desc);

Ответ 3

Вы использовали бы что-то вроде (с jQuery):

$('meta[name=author]').attr('content', 'New Author Name');

Но это было бы в основном бессмысленно, поскольку метатеги обычно скребли, только когда документ загружается, как правило, без выполнения какого-либо JavaScript.

Ответ 4

Вы можете изменить meta с помощью, например, вызовов jQuery, таких как:

$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);

Я думаю, что это имеет значение, так как google сказал, что они будут индексировать контент ajax с помощью #!hashes и _escaped_fragment_. И теперь они могут проверить это (даже автоматически, без браузеров, см. Ссылку "Создание HTML-снимков" на упомянутой выше странице), поэтому я думаю, что это способ для ребята из hardcore SEO.

Ответ 5

Определенно можно использовать 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 индексирует эти изменения на стороне клиента для вышеуказанного кода.

Ответ 6

Мета-теги

являются частью dom и могут быть доступны, и -i guess-changed, но поисковые системы (основные потребители мета-тегов) не будут видеть изменения, поскольку javascript не будет выполнен. поэтому, если вы не меняете метатег (обновление приходит на ум), что имеет последствия в браузере, это может быть мало пользы?

Ответ 7

Это должно быть возможно (или использовать 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>

Ответ 8

$(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">');
});

Ответ 9

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';
}

Ответ 10

простой add и div атрибут для каждого примера метатега

<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />

теперь как нормальное изменение div для ex. 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, ");

}

Ответ 11

Нет, div - это элемент тела, а не элемент head

EDIT: Тогда единственное, что нужно получить SE, - это базовый HTML, а не модифицированный ajax.

Ответ 12

Да, можно добавить метатеги с Javascript. Я сделал в своем примере

Android не уважает удаление метаданных?

Но я не знаю, как изменить его, а затем удалить его. Кстати, в моем примере.. когда вы нажимаете кнопку "ADD", он добавляет тег и изменения в видовом экране соответственно, но я не знаю, как вернуть его обратно (удалите его, на Android). Хотелось бы, чтобы Firebug для Android так Я видел, что происходит. Firefox удаляет тег. если у кого-нибудь есть идеи по этому поводу, обратите внимание на мой вопрос.

Ответ 13

имеют это в индексе

<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>

это в ajaxfiles      og: введите "og: title" og: description и og: image

и добавьте это также

<link rel="origin" href={http://yourPage.com}/>

затем добавьте js после ajaxCall

FB.XFBML.parse();

Изменить: вы можете отобразить правильное название и изображение в facebook в txt/php douments (мои только называются .php как расширения, но больше txt файлов). Затем у меня есть метатеги в этих файлах, а ссылка - в индекс в каждом документе, а также мета-ссылка в индексном файле для каждого подфайла.

Если кто-то знает лучший способ сделать это, я буду благодарен за любые дополнения:)

Ответ 14

Это похоже на работу с небольшим геометрически настроенным приложением, где он должен работать как на мобильных, так и на других браузерах с небольшими изменениями, поэтому поиск статуса мобильного/немобильного браузера и для мобильных телефонов, устанавливающих окно просмотра на ширину устройства необходим. Поскольку скрипты могут запускаться из заголовка, нижний заголовок js, похоже, изменяет метатаг для ширины устройства. Перед загрузкой страницы. Можно заметить, что использование navigator.userAgent предусмотрено как экспериментальное. script должен следовать за элементом метатага, который нужно изменить, поэтому нужно выбрать какое-то начальное содержимое, а затем изменить на какое-то условие.

  

<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">

. , ,   , , .

Ответ 15

Если у нас вообще нет метатега, мы можем использовать следующее:

var _desc = 'Out description';
var meta = document.createElement('meta');
meta.setAttribute('name', 'description');
meta.setAttribute('content', _desc);
document.getElementsByTagName('head')[0].appendChild(meta);

Ответ 16

Вы можете использовать более простое и легкое решение:

document.head.querySelector('meta[name="description"]').content = _desc