使用 jQuery 设置元标记值时遇到问题 [重复]

Posted

技术标签:

【中文标题】使用 jQuery 设置元标记值时遇到问题 [重复]【英文标题】:Having trouble using jQuery to set meta tag values [duplicate] 【发布时间】:2011-02-19 08:46:46 【问题描述】:

可能重复:Is it possible to use javascript to change the meta-tags of the page?

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

如果我使用:

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

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

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

【问题讨论】:

你用什么 jQuery 代码来创建标签? 【参考方案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现在设置为具有该名称的&lt;meta&gt;,您可以设置该属性。

【讨论】:

感谢 Nick 提供的代码。我在做的事情可能看起来很奇怪,但它是一个 100% 的客户端应用程序,所以当用户做事时,Meta 标签的值需要改变以反映当前状态。 嗨,不应该是:mt.attr('some-name', 'some value'); @Andresch - 不,我们正在设置&lt;meta&gt; 标签的content="some value" 属性,它是该元素的特定属性...您可以在此处阅读更多信息:w3.org/TR/html4/struct/global.html#h-7.4.4.2 @NickCraver:啊,现在我明白了。谢谢!【参考方案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 最常被假定为“name”,但我也必须设置“property”,因此让函数处理元元名称。

【讨论】:

我可以建议将函数更改为返回mt吗?您可能还想对其执行其他操作。 啊,当然是链接。谢谢你提醒我的模式!【参考方案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'
);

使用它的默认值。

【讨论】:

我认为最后一个代码块的第一行应该是: /* $('meta[name=viewport]').attr( */ I added a '.

以上是关于使用 jQuery 设置元标记值时遇到问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 jQuery 读取元标记

如何在不使用 jquery append 的情况下插入元标记?

SQL执行插入时,遇到重复键值时,如何设置才能让新插入的数据覆盖原有旧数据;要用存储过程么?

使用 jQuery 验证字段 [重复]

仅使用 Javascript 从 HTML 字符串中提取元标记

在启动时设置值时,jQuery Validator“required”不起作用