12

可能重复:
是否可以使用 javascript 来更改页面的元标记?

我正在尝试使用 jQuery 设置元标记(请不要回复说这没有意义,因为搜索引擎等等等等……我正在加载调用检查这些 vales 的 3rd 方 Javascript 函数,例如 Tweetmeme和脸书)。

如果我使用:

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

它确实可以设置现有元标记的值,但如果这样的命名标记不存在,则不会创建元标记。

如果您对此有见解或经验,请回复...

4

3 回答 3

12

你可以这样做,不是最干净的,但你想做的很奇怪,所以没有一个很好的方法来处理它:

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

那里的条件表达式检查.length0 或者false如果没有找到,如果是这种情况,我们创建元素并将其附加到头部,无论它是添加的还是最初找到的,mt现在都设置为<meta>具有该名称的 ,您可以设置属性。

于 2010-05-14T02:37:02.767 回答
6

我只是在 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'
);

用它的默认值做了。

于 2011-02-21T13:48:33.217 回答
6

利用 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);
    }

元名称通常可能被假定为“名称”,但我也必须设置“属性”,因此使函数处理元元名称。

于 2010-05-14T03:08:33.997 回答