mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-10 01:02:08 +01:00
Add ability to trigger cookie removal on specific events
As discussed with filter list volunteers. Related discussion: https://github.com/uBlockOrigin/uBlock-discussions/discussions/834
This commit is contained in:
parent
bcf809615c
commit
ef311ddbec
1 changed files with 23 additions and 10 deletions
|
@ -2703,17 +2703,25 @@ function cookieRemover(
|
|||
if ( typeof needle !== 'string' ) { return; }
|
||||
const safe = safeSelf();
|
||||
const reName = safe.patternToRegex(needle);
|
||||
const removeCookie = function() {
|
||||
const extraArgs = safe.getExtraArgs(Array.from(arguments), 1);
|
||||
const throttle = (fn, ms = 1000) => {
|
||||
if ( throttle.timer !== undefined ) { return; }
|
||||
throttle.timer = setTimeout(( ) => {
|
||||
throttle.timer = undefined;
|
||||
fn();
|
||||
}, ms);
|
||||
};
|
||||
const removeCookie = ( ) => {
|
||||
document.cookie.split(';').forEach(cookieStr => {
|
||||
let pos = cookieStr.indexOf('=');
|
||||
const pos = cookieStr.indexOf('=');
|
||||
if ( pos === -1 ) { return; }
|
||||
let cookieName = cookieStr.slice(0, pos).trim();
|
||||
if ( !reName.test(cookieName) ) { return; }
|
||||
let part1 = cookieName + '=';
|
||||
let part2a = '; domain=' + document.location.hostname;
|
||||
let part2b = '; domain=.' + document.location.hostname;
|
||||
const cookieName = cookieStr.slice(0, pos).trim();
|
||||
if ( reName.test(cookieName) === false ) { return; }
|
||||
const part1 = cookieName + '=';
|
||||
const part2a = '; domain=' + document.location.hostname;
|
||||
const part2b = '; domain=.' + document.location.hostname;
|
||||
let part2c, part2d;
|
||||
let domain = document.domain;
|
||||
const domain = document.domain;
|
||||
if ( domain ) {
|
||||
if ( domain !== document.location.hostname ) {
|
||||
part2c = '; domain=.' + domain;
|
||||
|
@ -2722,8 +2730,8 @@ function cookieRemover(
|
|||
part2d = '; domain=' + domain.replace('www', '');
|
||||
}
|
||||
}
|
||||
let part3 = '; path=/';
|
||||
let part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT';
|
||||
const part3 = '; path=/';
|
||||
const part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT';
|
||||
document.cookie = part1 + part4;
|
||||
document.cookie = part1 + part2a + part4;
|
||||
document.cookie = part1 + part2b + part4;
|
||||
|
@ -2738,6 +2746,11 @@ function cookieRemover(
|
|||
}
|
||||
});
|
||||
};
|
||||
if ( extraArgs.when === 'scroll' ) {
|
||||
document.addEventListener('scroll', ( ) => {
|
||||
throttle(removeCookie);
|
||||
}, { passive: true });
|
||||
}
|
||||
removeCookie();
|
||||
window.addEventListener('beforeunload', removeCookie);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue