163

Is it possible to use jQuery to read meta tags. If so do you know what the basic structure of the code will be, or have links to any tutorials.

Ankur
  • 47,089
  • 107
  • 237
  • 309

6 Answers6

321

Just use something like:

var author = $('meta[name=author]').attr('content');

or this as well

var author = $('meta[name=author]').prop('content');
user28864
  • 2,955
  • 1
  • 23
  • 19
MiffTheFox
  • 20,290
  • 14
  • 66
  • 90
20

Would this parser help you?

https://github.com/fiann/jquery.ogp

It parses meta OG data to JSON, so you can just use the data directly. If you prefer, you can read/write them directly using JQuery, of course. For example:

$("meta[property='og:title']").attr("content", document.title);
$("meta[property='og:url']").attr("content", location.toString());

Note the single-quotes around the attribute values; this prevents parse errors in jQuery.

Syntle
  • 4,700
  • 3
  • 9
  • 32
Danilo Moret
  • 383
  • 2
  • 9
8

I just tried this, and this could be a jQuery version-specific error, but

$("meta[property=twitter:image]").attr("content");

resulted in the following syntax error for me:

Error: Syntax error, unrecognized expression: meta[property=twitter:image]

Apparently it doesn't like the colon. I was able to fix it by using double and single quotes like this:

$("meta[property='twitter:image']").attr("content");

(jQuery version 1.8.3 -- sorry, I would have made this a comment to @Danilo, but it won't let me comment yet)

charltoons
  • 1,713
  • 2
  • 16
  • 24
5

jQuery now supports .data();, so if you have

<div id='author' data-content='stuff!'>

use

var author = $('#author').data("content"); // author = 'stuff!'
Sauce
  • 588
  • 5
  • 12
4
$("meta")

Should give you back an array of elements whose tag name is META and then you can iterate over the collection to pick out whatever attributes of the elements you are interested in.

illvm
  • 1,326
  • 13
  • 28
1

For select twitter meta name , you can add a data attribute.

example :

meta name="twitter:card" data-twitterCard="" content=""
$('[data-twitterCard]').attr('content');
TZHX
  • 4,707
  • 14
  • 43
  • 52
PoussinDev
  • 21
  • 4