Подтвердить что ты не робот

Не удалось использовать jQuery для установки значений метатега

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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> с этим именем, и вы можете установить атрибут.

Ответ 2

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

    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 чаще всего может считаться "именем", но мне также нужно установить "свойство", поэтому функция обработала мета-имя мета.

Ответ 3

Я просто экспериментировал с этим немного в 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'
);

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