Skip to content

Commit

Permalink
Merge pull request sitexw#1 from sitexw/v3.x
Browse files Browse the repository at this point in the history
Update to v3.2.0
  • Loading branch information
sitexw committed Aug 30, 2015
2 parents 26d138e + bbc5891 commit c01bcfc
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 42 deletions.
1 change: 0 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
BlockAdBlock (v3.1.1)
BlockAdBlock (v3.2.0)
===========

([FuckAdBlock](https://github.com/sitexw/FuckAdBlock) same project but with a more convenient name)
Expand Down Expand Up @@ -59,9 +59,10 @@ if(typeof blockAdBlock === 'undefined') {
}

// Change the options
blockAdBlock.setOptions('checkOnLoad', false);
blockAdBlock.setOption('checkOnLoad', false);
// and|or
blockAdBlock.setOptions({
blockAdBlock.setOption({
debug: true,
checkOnLoad: false,
resetOnEnd: false
});
Expand Down Expand Up @@ -89,6 +90,9 @@ baitClass: 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads

// CSS style used to hide the bait of the users
baitStyle: 'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;'

// Displays the debug in the console (available only from version 3.2 and more)
debug: false
```

Method available
Expand Down
80 changes: 69 additions & 11 deletions blockadblock.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* BlockAdBlock 3.1.1
* BlockAdBlock 3.2.0
* Copyright (c) 2015 Valentin Allaire <[email protected]>
* Released under the MIT license
* https://github.com/sitexw/BlockAdBlock
Expand All @@ -13,10 +13,11 @@
loopCheckTime: 50,
loopMaxNumber: 5,
baitClass: 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links',
baitStyle: 'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;'
baitStyle: 'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;',
debug: false
};
this._var = {
version: '3.1.1',
version: '3.2.0',
bait: null,
checking: false,
loop: null,
Expand All @@ -30,6 +31,9 @@
var eventCallback = function() {
setTimeout(function() {
if(self._options.checkOnLoad === true) {
if(self._options.debug === true) {
self._log('onload->eventCallback', 'A check loading is launched');
}
if(self._var.bait === null) {
self._creatBait();
}
Expand All @@ -49,6 +53,10 @@
BlockAdBlock.prototype._var = null;
BlockAdBlock.prototype._bait = null;

BlockAdBlock.prototype._log = function(method, message) {
console.log('[BlockAdBlock]['+method+'] '+message);
};

BlockAdBlock.prototype.setOption = function(options, value) {
if(value !== undefined) {
var key = options;
Expand All @@ -57,6 +65,9 @@
}
for(var option in options) {
this._options[option] = options[option];
if(this._options.debug === true) {
this._log('setOption', 'The option "'+option+'" he was assigned to "'+options[option]+'"');
}
}
return this;
};
Expand All @@ -74,18 +85,33 @@
this._var.bait.offsetWidth;
this._var.bait.clientHeight;
this._var.bait.clientWidth;

if(this._options.debug === true) {
this._log('_creatBait', 'Bait has been created');
}
};
BlockAdBlock.prototype._destroyBait = function() {
window.document.body.removeChild(this._var.bait);
this._var.bait = null;

if(this._options.debug === true) {
this._log('_destroyBait', 'Bait has been removed');
}
};

BlockAdBlock.prototype.check = function(loop) {
if(loop === undefined) {
loop = true;
}

if(this._options.debug === true) {
this._log('check', 'An audit was requested '+(loop===true?'with a':'without')+' loop');
}

if(this._var.checking === true) {
if(this._options.debug === true) {
this._log('check', 'A check was canceled because there is already an ongoing');
}
return false;
}
this._var.checking = true;
Expand All @@ -101,7 +127,12 @@
self._checkBait(loop);
}, this._options.loopCheckTime);
}
this._checkBait(loop);
setTimeout(function() {
self._checkBait(loop);
}, 1);
if(this._options.debug === true) {
this._log('check', 'A check is in progress ...');
}

return true;
};
Expand Down Expand Up @@ -130,33 +161,52 @@
}
}

if(this._options.debug === true) {
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'));
}

if(loop === true) {
this._var.loopNumber++;
if(this._var.loopNumber >= this._options.loopMaxNumber) {
clearInterval(this._var.loop);
this._var.loop = null;
this._var.loopNumber = 0;
this._stopLoop();
}
}

if(detected === true) {
if(loop === true) {
this._var.checking = false;
}
this._stopLoop();
this._destroyBait();
this.emitEvent(true);
} else if(this._var.loop === null || loop === false) {
if(loop === true) {
this._var.checking = false;
}
} else if(this._var.loop === null || loop === false) {
this._destroyBait();
this.emitEvent(false);
if(loop === true) {
this._var.checking = false;
}
}
};
BlockAdBlock.prototype._stopLoop = function(detected) {
clearInterval(this._var.loop);
this._var.loop = null;
this._var.loopNumber = 0;

if(this._options.debug === true) {
this._log('_stopLoop', 'A loop has been stopped');
}
};

BlockAdBlock.prototype.emitEvent = function(detected) {
if(this._options.debug === true) {
this._log('emitEvent', 'An event with a '+(detected===true?'positive':'negative')+' detection was called');
}

var fns = this._var.event[(detected===true?'detected':'notDetected')];
for(var i in fns) {
if(this._options.debug === true) {
this._log('emitEvent', 'Call function '+(parseInt(i)+1)+'/'+fns.length);
}
if(fns.hasOwnProperty(i)) {
fns[i]();
}
Expand All @@ -169,10 +219,18 @@
BlockAdBlock.prototype.clearEvent = function() {
this._var.event.detected = [];
this._var.event.notDetected = [];

if(this._options.debug === true) {
this._log('clearEvent', 'The event list has been cleared');
}
};

BlockAdBlock.prototype.on = function(detected, fn) {
this._var.event[(detected===true?'detected':'notDetected')].push(fn);
if(this._options.debug === true) {
this._log('on', 'A type of event "'+(detected===true?'detected':'notDetected')+'" was added');
}

return this;
};
BlockAdBlock.prototype.onDetected = function(fn) {
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "blockadblock",
"version": "3.1.1",
"version": "3.2.0",
"description": "Detects ad blockers (AdBlock, ...)",
"authors": [{
"name" : "Valentin Allaire",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "blockadblock",
"version": "3.1.1",
"version": "3.2.0",
"description": "Detects ad blockers (AdBlock, ...)",
"author": {
"name" : "Valentin Allaire",
Expand Down
Loading

0 comments on commit c01bcfc

Please sign in to comment.