ドキュメントの「説明」メタ タグを抽出する必要があります。
デフォルトの方法は、 document.getElementsByTagName('META') を使用してから、配列を反復処理することです - http://www.rgagnon.com/jsdetails/js-0070.htmlにあるように
しかし、「1行のコード」というより迅速なアプローチが他にないのではないかと思っています。私は xPath に詳しくありませんが、うまくいくでしょうか? 何か案は?
ドキュメントの「説明」メタ タグを抽出する必要があります。
デフォルトの方法は、 document.getElementsByTagName('META') を使用してから、配列を反復処理することです - http://www.rgagnon.com/jsdetails/js-0070.htmlにあるように
しかし、「1行のコード」というより迅速なアプローチが他にないのではないかと思っています。私は xPath に詳しくありませんが、うまくいくでしょうか? 何か案は?
承知しました...
var desc = document.getElementsByName('description')[0].getAttribute('content');
もちろん、これは説明という名前のメタタグがあることを前提としています。
より完全にするために、これは大文字と小文字に関係なく説明をキャッチします。
function getDesc(){
var metas = document.getElementsByTagName('meta');
for(var i=0;mLen=metas.length;i<mLen;i++){
if(metas[i].getAttribute('name').toLowerCase() == 'description'){
return metas[i].getAttribute('content');
}
}
return null;//or empty string if you prefer
}
var desc = getDesc();
XPath (をサポートしているクライアントdocument.evaluate
) で実行できますが、それはおそらくやり過ぎです:
document.evaluate('//*[@name="description"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
Scunliffe、あなたの提案は間違いなくうまくいくと思います.少なくとも複数行の機能はうまくいきます.
Webkit (Chrome + Safari) では実行できないが、非常にコンパクトなソリューションを思いつきました。
var metas = document.getElementsByTagName('META');
var value = (metas.namedItem ("description") || metas.namedItem ("Description") || metas.namedItem ("DESCRIPTION") || {}).content;
これは、NodeList オブジェクトに対して namedItem() 関数を使用し、別のプログラマーが「説明」を記述する可能性が最も高い方法を探します。これは、属性名の大文字と小文字を無視して、タグの属性の値を取得することに注意してください。
<meta name="description" content="my description" />
<meta NAME="Description" CoNtEnT="my description" />
しかし、残念ながら (Oy Vey) nameItem() は Safari と Chrome では機能しません :-( これらのブラウザには別の方法があるかもしれません...
また、「最速」とは何を意味するかにもよります。つまり、記述できるコードが最短か、それともブラウザーからの応答が最速かということですか?
最も迅速な応答を得るには、head 要素の meta 要素を見て、「description」という名前の要素を選択してください。
{
var s=[], metas=document.getElementsByTagName('head')[0].getElementsByTagName('meta');
for(var i=0,L=metas.length;i<L;i++){
if(metas[i].name=='description')s[s.length]=metas[i].content;
}
s= s.join(',');
}