@uifabric/experiments
Version:
Experimental React components for building experiences for Office 365.
50 lines • 2.05 kB
JavaScript
export function getOpenGraphProperties(url) {
var attributes = {};
var metaElements = extractMetaTags(url);
for (var i = 0; i < metaElements.length; i++) {
if (metaElements[i].attributes !== null && metaElements[i].attributes.length >= 2) {
switch (metaElements[i].attributes[0].nodeValue) {
case 'og:title':
attributes.title = metaElements[i].content;
break;
case 'og:type':
attributes.itemType = metaElements[i].content;
break;
case 'og:image':
case 'og:image:url':
attributes.image = metaElements[i].content;
break;
case 'og:image:secure_url':
attributes.imageSecureUrl = metaElements[i].content;
break;
case 'og:image:type':
attributes.imageType = metaElements[i].content;
break;
case 'og:image:width':
attributes.imageWidth = metaElements[i].content;
break;
case 'og:image:height':
attributes.imageHeight = metaElements[i].content;
break;
case 'og:image:alt':
attributes.imageAlt = metaElements[i].content;
break;
case 'og:url':
attributes.url = metaElements[i].content;
break;
}
}
}
return attributes;
}
function extractMetaTags(url) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', url, false);
xmlHttp.overrideMimeType('application/xml');
xmlHttp.send(null);
var parser = new DOMParser();
var doc = parser.parseFromString(xmlHttp.responseText, 'text/html');
var metaElements = doc.getElementsByTagName('meta');
return metaElements;
}
//# sourceMappingURL=OpenGraph.js.map