12

重複の可能性:
JavaScript を使用してページのメタタグを変更することは可能ですか?

jQueryを使用してメタタグを設定しようとしています(検索エンジンが何とか何とかしているので、これが意味をなさないと返信しないでください... Tweetmeなど、これらの値を調べるサードパーティのJavascript関数を呼び出していますおよびフェイスブック)。

私が使用する場合:

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

そこの条件式は.length、0 またはfalse見つからない場合、要素を作成して先頭に追加します。要素が追加されたか最初に見つかったかに関係なく、その名前mtの に設定され<meta>ます。属性を設定します。

于 2010-05-14T02:37:02.767 に答える
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);
    }

ほとんどの場合、metaName は「名前」であると見なされる可能性がありますが、「プロパティ」も設定する必要があるため、関数がメタ メタ名を処理するようにしました。

于 2010-05-14T03:08:33.997 に答える
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 に答える