PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 1.7.3
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v1.7.3
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / freemius / assets / js / postmessage.js
embedpress / freemius / assets / js Last commit date
nojquery.ba-postmessage.js 9 years ago nojquery.ba-postmessage.min.js 9 years ago postmessage.js 9 years ago
postmessage.js
135 lines
1 (function ($, undef) {
2 var global = this;
3
4 // Namespace.
5 global.FS = global.FS || {};
6
7 global.FS.PostMessage = function ()
8 {
9 var
10 _is_child = false,
11 _postman = new NoJQueryPostMessageMixin('postMessage', 'receiveMessage'),
12 _callbacks = {},
13 _base_url,
14 _parent_url = decodeURIComponent(document.location.hash.replace(/^#/, '')),
15 _parent_subdomain = _parent_url.substring(0, _parent_url.indexOf('/', ('https://' === _parent_url.substring(0, ('https://').length)) ? 8 : 7)),
16 _init = function () {
17 _postman.receiveMessage(function (e) {
18 var data = JSON.parse(e.data);
19
20 if (_callbacks[data.type]) {
21 for (var i = 0; i < _callbacks[data.type].length; i++) {
22 // Execute type callbacks.
23 _callbacks[data.type][i](data.data);
24 }
25 }
26 }, _base_url);
27 },
28 _hasParent = ('' !== _parent_url),
29 $window = $(window),
30 $html = $('html');
31
32 return {
33 init : function (url, iframes)
34 {
35 _base_url = url;
36 _init();
37
38 // Automatically receive forward messages.
39 FS.PostMessage.receiveOnce('forward', function (data){
40 window.location = data.url;
41 });
42
43 iframes = iframes || [];
44
45 if (iframes.length > 0) {
46 $window.on('scroll', function () {
47 for (var i = 0; i < iframes.length; i++) {
48 FS.PostMessage.postScroll(iframes[i]);
49 }
50 });
51 }
52 },
53 init_child : function ()
54 {
55 this.init(_parent_subdomain);
56
57 _is_child = true;
58
59 // Post height of a child right after window is loaded.
60 $(window).bind('load', function () {
61 FS.PostMessage.postHeight();
62
63 // Post message that window was loaded.
64 FS.PostMessage.post('loaded');
65 });
66 },
67 hasParent : function ()
68 {
69 return _hasParent;
70 },
71 postHeight : function (diff, wrapper) {
72 diff = diff || 0;
73 wrapper = wrapper || '#wrap_section';
74 this.post('height', {
75 height: diff + $(wrapper).outerHeight(true)
76 });
77 },
78 postScroll : function (iframe) {
79 this.post('scroll', {
80 top: $window.scrollTop(),
81 height: ($window.height() - parseFloat($html.css('paddingTop')) - parseFloat($html.css('marginTop')))
82 }, iframe);
83 },
84 post : function (type, data, iframe)
85 {
86 console.debug('PostMessage.post', type);
87
88 if (iframe)
89 {
90 // Post to iframe.
91 _postman.postMessage(JSON.stringify({
92 type: type,
93 data: data
94 }), iframe.src, iframe.contentWindow);
95 }
96 else {
97 // Post to parent.
98 _postman.postMessage(JSON.stringify({
99 type: type,
100 data: data
101 }), _parent_url, window.parent);
102 }
103 },
104 receive: function (type, callback)
105 {
106 console.debug('PostMessage.receive', type);
107
108 if (undef === _callbacks[type])
109 _callbacks[type] = [];
110
111 _callbacks[type].push(callback);
112 },
113 receiveOnce: function (type, callback)
114 {
115 if (this.is_set(type))
116 return;
117
118 this.receive(type, callback);
119 },
120 // Check if any callbacks assigned to a specified message type.
121 is_set: function (type)
122 {
123 return (undef != _callbacks[type]);
124 },
125 parent_url: function ()
126 {
127 return _parent_url;
128 },
129 parent_subdomain: function ()
130 {
131 return _parent_subdomain;
132 }
133 };
134 }();
135 })(jQuery);