Возникли проблемы при использовании jQuery для установки значений метатега [duplicate]

  

Возможный дубликат:
Можно ли использовать javascript для изменения мета-тегов страницы?

Я пытаюсь установить метатеги с помощью jQuery (пожалуйста, не отвечайте, что это не имеет смысла, так как поисковые системы бла-бла-бла ... Я загружаю вызов сторонних функций Javascript, которые проверяют эти вейлы, такие как Tweetmeme и Facebook).

Если я использую:

 $('meta[name=some-name]').attr('content', 'some value');

он работает для установки значения существующего метатега, но не создает метатег, если такого именованного не существует.

Если у вас есть понимание или опыт с этим, пожалуйста, ответьте ...

12 голосов | спросил Zhami 14 Mayam10 2010, 06:35:02

3 ответа


0

Вы можете сделать это, не самое чистое, но то, что вы пытаетесь сделать, довольно странно, так что нет лучшего способа справиться с этим:

var mt = $('meta[name=some-name]');
mt = mt.length ? mt : $('<meta name="some-name" />').appendTo('head');
mt.attr('content', 'some value');

Условное выражение там проверяет .length, которое равно 0 или false если не найден, если это так, мы создаем элемент и добавляем его в заголовок, независимо от того, был ли он добавлен или изначально найден, mt теперь имеет значение <meta> с этим именем, и вы можете установить атрибут.

ответил Nick Craver 14 Mayam10 2010, 06:37:02
0

Используя код Ника, я сделал функцию установки метатега, создавая при необходимости. Если это кому-нибудь пригодится ...

    function setOrCreateMetaTag(metaName, name, value) {
        var t = 'meta['+metaName+'='+name+']';
        var mt = $(t);
        if (mt.length === 0) {
            t = '<meta '+metaName+'="'+name+'" />';
            mt = $(t).appendTo('head');
        }
        mt.attr('content', value);
    }

metaName чаще всего можно предположить как «имя», но мне также необходимо установить «свойство», поэтому функция должна обрабатывать мета-имя.

ответил Zhami 14 Mayam10 2010, 07:08:33
0

Я просто немного экспериментировал с этим на iOS. Оказалось, что можно было динамически установить метатег, чтобы предотвратить масштабирование в iOS, например, так:

$('<meta>', {
 name: 'viewport',
 content: 'width=device-width, minimum-scale=1, maximum-scale=1'
}).appendTo('head');

Однако, удалив его, не включил масштабирование.

$('meta[name=viewport]').remove();

Но перезаписываем метатег:

$('meta[name=viewport]').attr(
 'content',
 'width=980, minimum-scale=0.25, maximum-scale=1.6'
);

со значениями по умолчанию сделал.

ответил Matijs 21 FebruaryEurope/MoscowbMon, 21 Feb 2011 16:48:33 +0300000000pmMon, 21 Feb 2011 16:48:33 +030011 2011, 16:48:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132