active_frontend 14.1.1 → 14.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54ae884c7b36e63cd8093ebd2b95d713c7e99eb4
|
4
|
+
data.tar.gz: 5b27ffda4450e3e1fd1417aee92463a7b2caea81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67a1f2577e4d40d8d12feb427de798aeb0fb4c3cfe2bd0ef9ddf2890bdb21c7534ea6d020c4a077a43d40e553c10fd94514180f1e62cdeed535fae2aa91c0142
|
7
|
+
data.tar.gz: eddc376a922967285c7b7cea2b0a9b4471987a7f2f0ce3bdddb1c84d12e85e35b436451bf138a132b68dd3e479a5bee9c84e45ad7f6c2b0734d319e02e6b1431
|
@@ -0,0 +1,255 @@
|
|
1
|
+
(function (window) {
|
2
|
+
var AntiBlocker = function (options) {
|
3
|
+
this._options = {
|
4
|
+
checkOnLoad: false,
|
5
|
+
resetOnEnd: false,
|
6
|
+
loopCheckTime: 50,
|
7
|
+
loopMaxNumber: 5,
|
8
|
+
baitClass: 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links _ads',
|
9
|
+
baitStyle: 'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;',
|
10
|
+
debug: false
|
11
|
+
};
|
12
|
+
this._var = {
|
13
|
+
version: '1.0.0',
|
14
|
+
bait: null,
|
15
|
+
checking: false,
|
16
|
+
loop: null,
|
17
|
+
loopNumber: 0,
|
18
|
+
event: {
|
19
|
+
detected: [],
|
20
|
+
notDetected: []
|
21
|
+
}
|
22
|
+
};
|
23
|
+
|
24
|
+
if (options !== undefined) this.setOption(options);
|
25
|
+
|
26
|
+
var self = this;
|
27
|
+
var eventCallback = function () {
|
28
|
+
setTimeout(function () {
|
29
|
+
if (self._options.checkOnLoad === true) {
|
30
|
+
if (self._options.debug === true) {
|
31
|
+
self._log('onload -> eventCallback', 'A check loading is launched');
|
32
|
+
}
|
33
|
+
if (self._var.bait === null) {
|
34
|
+
self._creatBait();
|
35
|
+
}
|
36
|
+
setTimeout(function () {
|
37
|
+
self.check();
|
38
|
+
}, 1);
|
39
|
+
}
|
40
|
+
}, 1);
|
41
|
+
};
|
42
|
+
|
43
|
+
if (window.addEventListener !== undefined) {
|
44
|
+
window.addEventListener('load', eventCallback, false);
|
45
|
+
} else {
|
46
|
+
window.attachEvent('onload', eventCallback);
|
47
|
+
}
|
48
|
+
};
|
49
|
+
|
50
|
+
AntiBlocker.prototype._options = null;
|
51
|
+
AntiBlocker.prototype._var = null;
|
52
|
+
AntiBlocker.prototype._bait = null;
|
53
|
+
|
54
|
+
AntiBlocker.prototype._log = function (method, message) {
|
55
|
+
console.log('[AntiBlocker][' + method + '] ' + message);
|
56
|
+
};
|
57
|
+
|
58
|
+
AntiBlocker.prototype.setOption = function (options, value) {
|
59
|
+
if (value !== undefined) {
|
60
|
+
var key = options;
|
61
|
+
options = {};
|
62
|
+
options[key] = value;
|
63
|
+
}
|
64
|
+
|
65
|
+
for(var option in options) {
|
66
|
+
this._options[option] = options[option];
|
67
|
+
|
68
|
+
if (this._options.debug === true) {
|
69
|
+
this._log('setOption', 'The option "' + option + '" was assigned to "' + options[option] + '"');
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
return this;
|
74
|
+
};
|
75
|
+
|
76
|
+
AntiBlocker.prototype._creatBait = function () {
|
77
|
+
var bait = document.createElement('div');
|
78
|
+
bait.setAttribute('class', this._options.baitClass);
|
79
|
+
bait.setAttribute('style', this._options.baitStyle);
|
80
|
+
this._var.bait = window.document.body.appendChild(bait);
|
81
|
+
|
82
|
+
this._var.bait.offsetParent;
|
83
|
+
this._var.bait.offsetHeight;
|
84
|
+
this._var.bait.offsetLeft;
|
85
|
+
this._var.bait.offsetTop;
|
86
|
+
this._var.bait.offsetWidth;
|
87
|
+
this._var.bait.clientHeight;
|
88
|
+
this._var.bait.clientWidth;
|
89
|
+
|
90
|
+
if (this._options.debug === true) {
|
91
|
+
this._log('_creatBait', 'Bait has been created');
|
92
|
+
}
|
93
|
+
};
|
94
|
+
|
95
|
+
AntiBlocker.prototype._destroyBait = function () {
|
96
|
+
window.document.body.removeChild(this._var.bait);
|
97
|
+
this._var.bait = null;
|
98
|
+
|
99
|
+
if (this._options.debug === true) {
|
100
|
+
this._log('_destroyBait', 'Bait has been removed');
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
AntiBlocker.prototype.check = function (loop) {
|
105
|
+
if (loop === undefined) {
|
106
|
+
loop = true;
|
107
|
+
}
|
108
|
+
|
109
|
+
if (this._options.debug === true) {
|
110
|
+
this._log('check', 'An audit was requested ' + (loop ===true ? 'with a' : 'without') + ' loop');
|
111
|
+
}
|
112
|
+
|
113
|
+
if (this._var.checking === true) {
|
114
|
+
if (this._options.debug === true) {
|
115
|
+
this._log('check', 'A check was canceled because there is already an ongoing check');
|
116
|
+
}
|
117
|
+
|
118
|
+
return false;
|
119
|
+
}
|
120
|
+
|
121
|
+
this._var.checking = true;
|
122
|
+
|
123
|
+
if (this._var.bait === null) this._creatBait();
|
124
|
+
|
125
|
+
var self = this;
|
126
|
+
this._var.loopNumber = 0;
|
127
|
+
|
128
|
+
if (loop === true) {
|
129
|
+
this._var.loop = setInterval(function () {
|
130
|
+
self._checkBait(loop);
|
131
|
+
}, this._options.loopCheckTime);
|
132
|
+
}
|
133
|
+
|
134
|
+
setTimeout(function () {
|
135
|
+
self._checkBait(loop);
|
136
|
+
}, 1);
|
137
|
+
if (this._options.debug === true) {
|
138
|
+
this._log('check', 'A check is in progress ...');
|
139
|
+
}
|
140
|
+
|
141
|
+
return true;
|
142
|
+
};
|
143
|
+
|
144
|
+
AntiBlocker.prototype._checkBait = function (loop) {
|
145
|
+
var detected = false;
|
146
|
+
|
147
|
+
if (this._var.bait === null) this._creatBait();
|
148
|
+
|
149
|
+
if (window.document.body.getAttribute('abp') !== null ||
|
150
|
+
this._var.bait.offsetParent === null ||
|
151
|
+
this._var.bait.offsetHeight === 0 ||
|
152
|
+
this._var.bait.offsetLeft === 0 ||
|
153
|
+
this._var.bait.offsetTop === 0 ||
|
154
|
+
this._var.bait.offsetWidth === 0 ||
|
155
|
+
this._var.bait.clientHeight === 0 ||
|
156
|
+
this._var.bait.clientWidth === 0) {
|
157
|
+
detected = true;
|
158
|
+
}
|
159
|
+
|
160
|
+
if (window.getComputedStyle !== undefined) {
|
161
|
+
var baitTemp = window.getComputedStyle(this._var.bait, null);
|
162
|
+
|
163
|
+
if (baitTemp && (baitTemp.getPropertyValue('display') == 'none' || baitTemp.getPropertyValue('visibility') == 'hidden')) {
|
164
|
+
detected = true;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
if (this._options.debug === true) {
|
169
|
+
this._log('_checkBait', 'A check ('+(this._var.loopNumber+1)+'/'+this._options.loopMaxNumber+' ~'+(1+this._var.loopNumber*this._options.loopCheckTime)+'ms) was conducted and detection is '+(detected===true?'positive':'negative'));
|
170
|
+
}
|
171
|
+
|
172
|
+
if (loop === true) {
|
173
|
+
this._var.loopNumber++;
|
174
|
+
|
175
|
+
if (this._var.loopNumber >= this._options.loopMaxNumber) this._stopLoop();
|
176
|
+
}
|
177
|
+
|
178
|
+
if (detected === true) {
|
179
|
+
this._stopLoop();
|
180
|
+
this._destroyBait();
|
181
|
+
this.emitEvent(true);
|
182
|
+
|
183
|
+
if (loop === true) {
|
184
|
+
this._var.checking = false;
|
185
|
+
}
|
186
|
+
} else if (this._var.loop === null || loop === false) {
|
187
|
+
this._destroyBait();
|
188
|
+
this.emitEvent(false);
|
189
|
+
|
190
|
+
if (loop === true) {
|
191
|
+
this._var.checking = false;
|
192
|
+
}
|
193
|
+
}
|
194
|
+
};
|
195
|
+
|
196
|
+
AntiBlocker.prototype._stopLoop = function (detected) {
|
197
|
+
clearInterval(this._var.loop);
|
198
|
+
this._var.loop = null;
|
199
|
+
this._var.loopNumber = 0;
|
200
|
+
|
201
|
+
if (this._options.debug === true) {
|
202
|
+
this._log('_stopLoop', 'A loop has been stopped');
|
203
|
+
}
|
204
|
+
};
|
205
|
+
|
206
|
+
AntiBlocker.prototype.emitEvent = function (detected) {
|
207
|
+
if (this._options.debug === true) {
|
208
|
+
this._log('emitEvent', 'An event with a ' + (detected === true ? 'positive' : 'negative') + ' detection was called');
|
209
|
+
}
|
210
|
+
|
211
|
+
var fns = this._var.event[(detected === true ? 'detected' : 'notDetected')];
|
212
|
+
|
213
|
+
for(var i in fns) {
|
214
|
+
if (this._options.debug === true) {
|
215
|
+
this._log('emitEvent', 'Call function '+(parseInt(i)+1)+'/'+fns.length);
|
216
|
+
}
|
217
|
+
|
218
|
+
if (fns.hasOwnProperty(i)) {
|
219
|
+
fns[i]();
|
220
|
+
}
|
221
|
+
}
|
222
|
+
|
223
|
+
if (this._options.resetOnEnd === true) this.clearEvent();
|
224
|
+
return this;
|
225
|
+
};
|
226
|
+
|
227
|
+
AntiBlocker.prototype.clearEvent = function () {
|
228
|
+
this._var.event.detected = [];
|
229
|
+
this._var.event.notDetected = [];
|
230
|
+
|
231
|
+
if (this._options.debug === true) {
|
232
|
+
this._log('clearEvent', 'The event list has been cleared');
|
233
|
+
}
|
234
|
+
};
|
235
|
+
|
236
|
+
AntiBlocker.prototype.on = function (detected, fn) {
|
237
|
+
this._var.event[(detected === true ? 'detected' : 'notDetected')].push(fn);
|
238
|
+
|
239
|
+
if (this._options.debug === true) {
|
240
|
+
this._log('on', 'A type of event "'+(detected === true ? 'detected' : 'notDetected') + '" was added');
|
241
|
+
}
|
242
|
+
|
243
|
+
return this;
|
244
|
+
};
|
245
|
+
|
246
|
+
AntiBlocker.prototype.onDetected = function (fn) {
|
247
|
+
return this.on(true, fn);
|
248
|
+
};
|
249
|
+
|
250
|
+
AntiBlocker.prototype.onNotDetected = function (fn) {
|
251
|
+
return this.on(false, fn);
|
252
|
+
};
|
253
|
+
|
254
|
+
window.AntiBlocker = AntiBlocker;
|
255
|
+
})(window);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.1.
|
4
|
+
version: 14.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -246,6 +246,7 @@ files:
|
|
246
246
|
- vendor/assets/javascripts/base/_tour.js
|
247
247
|
- vendor/assets/javascripts/base/_transition.js
|
248
248
|
- vendor/assets/javascripts/base/_typeahead.js
|
249
|
+
- vendor/assets/javascripts/extensions/_antiblocker.js
|
249
250
|
- vendor/assets/javascripts/extensions/_calendar.js
|
250
251
|
- vendor/assets/javascripts/extensions/_chart.js
|
251
252
|
- vendor/assets/javascripts/extensions/_cohort.js
|