forked from sitexw/BlockAdBlock
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request sitexw#1 from sitexw/v3.x
Update to v3.2.0
- Loading branch information
Showing
6 changed files
with
119 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
@@ -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, | ||
|
@@ -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(); | ||
} | ||
|
@@ -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; | ||
|
@@ -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; | ||
}; | ||
|
@@ -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; | ||
|
@@ -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; | ||
}; | ||
|
@@ -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](); | ||
} | ||
|
@@ -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) { | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.