mediaEmbedder.js
1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
angular.module('mediaEmbedder', [])
.service('mediaEmbedder', [function () {
function embedHtml(payload, targetEl) {
if (/^<script /i.test(payload)) {
return embedScript(payload, targetEl);
}
angular.element(targetEl).html(payload);
if (window.FB) {
FB.XFBML.parse(angular.element(targetEl)[0]);
}
if (window.instgrm) {
instgrm.Embeds.process();
}
}
function embedScript(payload, targetEl) {
var script = document.createElement('script');
angular.forEach($(payload)[0].attributes, function (attr) {
script.setAttribute(attr.name, attr.value);
});
angular.element(targetEl).html('');
angular.element(targetEl).append(script);
}
function embedImage(imageUrl, targetEl) {
angular.element(targetEl).html('<img src="' + imageUrl + '">');
}
return {
embed: function (media, targetEl) {
switch (media.payloadType) {
case 'html':
embedHtml(media.payload, targetEl);
break;
case 'image':
embedImage(media.payload, targetEl);
break;
default:
console.error('mediaEmbedder: ' + media.payloadType + ' type is not configured.');
break;
}
},
};
}]);