Bookmarklet · Safari, Chrome, Firefox
Deux favoris à glisser dans la barre de votre navigateur. Vous cliquez dessus quand vous en avez besoin, rien ne tourne en arrière-plan.
↑ glissez-les vers votre barre de favoris (⇧⌘B pour l'afficher)
Échap pour revenir.Créez un favori, puis collez le code dans son champ « adresse ». Safari : clic droit sur un favori → Modifier l'adresse. Chrome : clic droit sur la barre → Ajouter une page.
🍪 Tout refuser
📖 Mode lecture
(function () {
var FORCE = /*FORCE*/false;
var hits = [], blocked = 0;
function txt(el) { try { return (el.innerText || el.textContent || '').replace(/\s+/g, ' ').trim(); } catch (e) { return ''; } }
function vis(el) { try { return el.getClientRects().length > 0; } catch (e) { return false; } }
function toast(msg, ok) {
try {
var d = document.createElement('div');
d.textContent = msg;
d.style.cssText = 'position:fixed !important;z-index:2147483647 !important;left:50% !important;bottom:22px !important;' +
'top:auto !important;right:auto !important;transform:translateX(-50%) !important;' +
'background:' + (ok ? '#14603a' : '#8A2B18') + ' !important;color:#fff !important;padding:11px 17px !important;' +
'border-radius:9px !important;font:600 13px/1.45 -apple-system,BlinkMacSystemFont,sans-serif !important;' +
'max-width:82vw !important;text-align:center !important;letter-spacing:normal !important;text-transform:none !important;' +
'box-shadow:0 6px 22px rgba(0,0,0,.35) !important;pointer-events:none !important;opacity:1 !important;visibility:visible !important';
document.body.appendChild(d);
setTimeout(function () { d.parentNode && d.parentNode.removeChild(d); }, 5200);
} catch (e) {}
}
/* ===================== MODE LECTURE ===================== */
var KILL = /(^|[\s_-])(pub|pubs|ads?|advert|banner|sponsor|share|social|newsletter|related|recommend|comment|nav|menu|footer|header|breadcrumb|tags?|cookie|consent|paywall|subscribe|abonn|promo|widget|outbrain|taboola|toolbar|sidebar|caption)/i;
var KEEP = /(article|content|contenu|body|story|post|entry|texte|chapo|main)/i;
function pickContainer() {
var ps = document.querySelectorAll('p'), nodes = [], sc = [];
for (var i = 0; i < ps.length; i++) {
var p = ps[i], t = txt(p);
if (t.length < 45 || !vis(p)) continue;
var par = p.parentElement;
for (var d = 0; d < 3 && par && par.tagName !== 'BODY'; d++) {
var idx = nodes.indexOf(par);
if (idx < 0) { nodes.push(par); sc.push(0); idx = nodes.length - 1; }
sc[idx] += t.length / (d + 1);
par = par.parentElement;
}
}
var best = null, bs = 0;
for (var k = 0; k < nodes.length; k++) {
var n = nodes[k], s = sc[k];
var cls = ((typeof n.className === 'string' ? n.className : '') + ' ' + (n.id || ''));
if (KILL.test(cls)) s *= 0.2;
if (KEEP.test(cls)) s *= 1.6;
if (n.tagName === 'ARTICLE') s *= 1.8;
var links = n.querySelectorAll('a'), lt = 0;
for (var q = 0; q < links.length; q++) lt += txt(links[q]).length;
var tt = txt(n).length || 1;
if (lt / tt > 0.4) s *= 0.25;
if (s > bs) { bs = s; best = n; }
}
return bs > 700 ? best : null;
}
function meta(sel, attr) {
var e = document.querySelector(sel);
return e ? (attr ? e.getAttribute(attr) : txt(e)) : '';
}
function cssRules() {
return [
'.root{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;background:#FCFBF7;color:#1B1D18;font:400 19px/1.72 Charter,Georgia,"Times New Roman",serif;-webkit-font-smoothing:antialiased}',
'@media (prefers-color-scheme:dark){.root{background:#12140F;color:#E6E9DE}}',
'.w{max-width:40em;margin:0 auto;padding:26px 24px 140px}',
'.bar{position:sticky;top:0;display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:12px 0 18px;background:inherit}',
'.bar button{font:600 13px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;padding:8px 13px;border-radius:7px;border:1px solid rgba(127,127,127,.4);background:transparent;color:inherit;cursor:pointer}',
'.bar button:hover{background:rgba(127,127,127,.16)}',
'.bar button:focus-visible{outline:2px solid currentColor;outline-offset:2px}',
'h1{font-size:1.85em;line-height:1.15;margin:.2em 0 .35em;font-weight:600;letter-spacing:-.01em}',
'.meta{font:500 12.5px/1.5 -apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.06em;text-transform:uppercase;opacity:.55;margin:0 0 2.2em}',
'.art p{margin:0 0 1.1em}',
'.art h2,.art h3,.art h4{font-size:1.18em;line-height:1.3;margin:1.9em 0 .5em;font-weight:600}',
'.art img{max-width:100%;height:auto;display:block;margin:1.6em auto;border-radius:6px}',
'.art blockquote{margin:1.5em 0;padding-left:1.1em;border-left:3px solid rgba(127,127,127,.45);font-style:italic}',
'.art a{color:inherit;text-underline-offset:3px}',
'.art ul,.art ol{margin:0 0 1.1em;padding-left:1.4em}',
'.art li{margin:0 0 .45em}',
'.art figure{margin:1.6em 0}',
'.art table,.art pre{max-width:100%;overflow-x:auto;display:block}',
'.art *::first-letter{font-size:inherit;float:none;line-height:inherit;font-style:inherit;font-weight:inherit;color:inherit;margin:0;padding:0}',
'.art *::before,.art *::after{content:none}'
];
}
var ASIDE = /^(à lire aussi|a lire aussi|lire aussi|à lire également|voir aussi|sur le même sujet|à voir également|en savoir plus|partager|nos articles)/i;
function reader() {
if (document.getElementById('__lect')) return true;
var src = pickContainer();
if (!src) return false;
var box = src.cloneNode(true);
var junk = box.querySelectorAll('script,style,noscript,iframe,form,button,input,select,textarea,svg,video,audio,aside,nav,footer,object,embed,link,h1,[role="dialog"],[aria-hidden="true"]');
for (var i = junk.length - 1; i >= 0; i--) { try { junk[i].parentNode.removeChild(junk[i]); } catch (e) {} }
var all = box.querySelectorAll('*');
for (var j = all.length - 1; j >= 0; j--) {
var e = all[j];
var cls = ((typeof e.className === 'string' ? e.className : '') + ' ' + (e.id || ''));
if (e.tagName !== 'P' && e.tagName !== 'IMG' && KILL.test(cls)) { try { e.parentNode.removeChild(e); } catch (x) {} continue; }
var own = (e.textContent || '').replace(/\s+/g, ' ').trim();
if (own.length < 400 && ASIDE.test(own)) { try { e.parentNode.removeChild(e); } catch (x) {} continue; }
if (e.tagName === 'IMG') {
var u = e.getAttribute('data-src') || e.getAttribute('data-lazy-src') || e.getAttribute('data-original') || e.getAttribute('src') || '';
if (!u || /^data:image\/(gif|svg)/.test(u) || (e.naturalWidth && e.naturalWidth < 140)) { try { e.parentNode.removeChild(e); } catch (x) {} continue; }
e.setAttribute('src', u);
e.removeAttribute('srcset'); e.removeAttribute('loading'); e.removeAttribute('sizes');
}
e.removeAttribute('style'); e.removeAttribute('class'); e.removeAttribute('id'); e.removeAttribute('onclick');
}
var title = meta('meta[property="og:title"]', 'content') || meta('h1') || document.title || '';
var author = meta('meta[name="author"]', 'content') || meta('[rel="author"]') || '';
var date = meta('meta[property="article:published_time"]', 'content') || '';
if (date) { try { date = new Date(date).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' }); } catch (e) { date = ''; } }
var host = document.createElement('div');
host.id = '__lect';
host.style.cssText = 'position:fixed !important;left:0 !important;top:0 !important;right:0 !important;bottom:0 !important;' +
'width:auto !important;height:auto !important;z-index:2147483647 !important;display:block !important;' +
'margin:0 !important;padding:0 !important;border:0 !important;filter:none !important;transform:none !important;' +
'opacity:1 !important;visibility:visible !important;clip-path:none !important';
var sr = null;
try { sr = host.attachShadow({ mode: 'open' }); } catch (e) {}
var mount = sr || host;
var root = document.createElement('div'); root.className = 'root';
var w = document.createElement('div'); w.className = 'w';
var bar = document.createElement('div'); bar.className = 'bar';
function mk(t, fn) { var b = document.createElement('button'); b.type = 'button'; b.textContent = t; b.addEventListener('click', fn); bar.appendChild(b); }
var size = 19;
function setSize(v) { size = Math.max(14, Math.min(30, v)); root.style.fontSize = size + 'px'; }
mk('A\u2212', function () { setSize(size - 1); });
mk('A+', function () { setSize(size + 1); });
mk('Quitter le mode lecture', close);
var h = document.createElement('h1'); h.textContent = title;
var m = document.createElement('p'); m.className = 'meta';
m.textContent = [location.hostname.replace(/^www\./, ''), author, date].filter(Boolean).join(' \u00b7 ');
var art = document.createElement('div'); art.className = 'art'; art.appendChild(box);
w.appendChild(bar); w.appendChild(h); w.appendChild(m); w.appendChild(art);
root.appendChild(w); mount.appendChild(root);
document.body.appendChild(host);
try {
var st = document.createElement('style');
mount.appendChild(st);
if (!st.sheet) { mount.removeChild(st); document.head.appendChild(st); }
var rules = cssRules();
for (var c1 = 0; c1 < rules.length; c1++) {
var rule = sr ? rules[c1] : rules[c1].replace(/(^|,|\{)\s*(\.root|\.w|\.bar|h1|\.meta|\.art)/g, '$1 #__lect $2');
try { st.sheet.insertRule(rule, st.sheet.cssRules.length); } catch (x) {}
}
} catch (e) {}
var prev = document.documentElement.style.overflow;
document.documentElement.style.overflow = 'hidden';
function close() {
document.documentElement.style.overflow = prev;
document.removeEventListener('keydown', esc, true);
try { host.parentNode.removeChild(host); } catch (e) {}
}
function esc(ev) { if (ev.key === 'Escape') { ev.stopPropagation(); close(); } }
document.addEventListener('keydown', esc, true);
return true;
}
if (FORCE) {
if (!reader()) toast("Pas assez de texte d'article identifiable sur cette page.", false);
return;
}
/* ============ DÉTECTION DU MUR « ACCEPTER OU PAYER » ============ */
var PAY = /(s['’ ]?abonn|abonnement|abonnez|sans publicit|sans pub\b|souscri|subscri|\d+[.,]\d{2}\s*(€|eur)|(€|eur)\s?\d|\d+\s?€|par mois|\/\s?mois|per month|offre premium|version payante)/i;
var CONSENT = /(cookie|consent|traceur|donn[ée]es personnelles|nos partenaires|publicit[ée]s? (personnalis|cibl)|vie priv[ée]e|privacy|rgpd|gdpr)/i;
function wallText() {
var out = '', all = document.body.querySelectorAll('*'), n = Math.min(all.length, 6000);
for (var i = 0; i < n; i++) {
var el = all[i], st;
try { st = getComputedStyle(el); } catch (e) { continue; }
var modal = (el.getAttribute && (el.getAttribute('aria-modal') === 'true' || el.getAttribute('role') === 'dialog'));
if (!modal && st.position !== 'fixed' && st.position !== 'sticky') continue;
if (!vis(el)) continue;
var t = txt(el);
if (t.length < 60 || t.length > 6000) continue;
out += ' ' + t;
if (out.length > 24000) break;
}
return out;
}
var wt = wallText();
if (CONSENT.test(wt) && PAY.test(wt)) {
var ok = reader();
toast(ok
? '⚠︎ Mur « accepter la pub ou payer ». Rien n\'a été cliqué — mode lecture activé.'
: '⚠︎ Mur « accepter la pub ou payer ». Rien n\'a été cliqué, et l\'article n\'est pas dans la page.', false);
return;
}
/* ===================== REFUS DES COOKIES ===================== */
var apis = [
['Didomi', function () { Didomi.setUserDisagreeToAll(); }],
['OneTrust', function () { OneTrust.RejectAll(); }],
['Cookiebot', function () { Cookiebot.decline(); }],
['Usercentrics', function () { UC_UI.denyAllConsents(); }],
['Osano', function () { Osano.cm.denyAll(); }],
['Complianz', function () { cmplz_deny_all(); }],
['tarteaucitron', function () { tarteaucitron.userInterface.respondAll(false); }],
['Klaro', function () { var m = klaro.getManager(); m.declineAll(); m.saveAndApplyConsents(); }],
['Axeptio', function () { window._axcb.push(function (s) { s.setAllVendorsStatus(false); }); }],
['CookieYes', function () { document.querySelector('.cky-btn-reject').click(); }],
['Quantcast', function () { document.querySelector('.qc-cmp2-summary-buttons button:last-child').click(); }]
];
for (var a = 0; a < apis.length; a++) { try { apis[a][1](); hits.push(apis[a][0]); } catch (e) {} }
var WL = /(sans\s+accepter|without\s+accepting|ohne\s+akzeptieren|sin\s+aceptar)/i;
var NO = /(tout\s+accepter|j.?accepte|accepter|accept|agree|allow|autoriser|abonn|subscribe|connect|log\s?in|sign\s?in|param[eé]tr|personnalis|configur|settings|manage|g[eé]rer|choix|options|customize|einstellungen|zustimmen|akzeptieren|en\s+savoir|learn\s+more|politique|policy|privacy|confidentialit)/i;
var YES = /(tout\s+refuser|refuser\s+tout|refuser|je\s+refuse|non\s+merci|uniquement.{0,20}(essentiel|n[eé]cessaire)|(essentiel|n[eé]cessaire)s?\s+(uniquement|seulement)|reject\s*all|reject|decline|deny|disagree|do\s+not\s+(accept|consent|sell|share)|only\s+(necessary|essential|required)|(necessary|essential)\s+only|alle\s+ablehnen|ablehnen|nur\s+notwendige|rechazar|rifiuta|weigeren|afwijzen|odrzu)/i;
function collect(root, out, depth) {
if (depth > 10) return;
var list;
try { list = root.querySelectorAll('*'); } catch (e) { return; }
for (var j = 0; j < list.length; j++) {
var el = list[j], t = el.tagName, c = el.getAttribute && el.getAttribute('class');
if (t === 'BUTTON' || t === 'A' || t === 'INPUT' ||
(el.getAttribute && el.getAttribute('role') === 'button') ||
(typeof c === 'string' && /btn|button/i.test(c))) out.push(el);
if (el.shadowRoot) collect(el.shadowRoot, out, depth + 1);
}
}
var seen = [];
function sweep(doc) {
var cands = [], best = null, bestScore = 0;
try { collect(doc, cands, 0); } catch (e) { return null; }
for (var k = 0; k < cands.length; k++) {
var el = cands[k];
if (seen.indexOf(el) > -1) continue;
var t = '';
try { t = (el.innerText || el.textContent || el.value || (el.getAttribute && el.getAttribute('aria-label')) || '').replace(/\s+/g, ' ').trim(); } catch (e) { continue; }
if (!t || t.length > 60) continue;
if (!vis(el)) continue;
var s = 0;
if (WL.test(t)) s = 100;
else if (NO.test(t)) continue;
else if (YES.test(t)) s = 60;
else continue;
s -= t.length * 0.3;
if (el.tagName === 'BUTTON') s += 5;
if (s > bestScore) { bestScore = s; best = el; }
}
if (best) { seen.push(best); try { best.click(); return best; } catch (e) {} }
return null;
}
function allDocs() {
var docs = [document], f = document.querySelectorAll('iframe,frame');
for (var n = 0; n < f.length; n++) {
try { var d = f[n].contentDocument; if (d && d.body) docs.push(d); else blocked++; } catch (e) { blocked++; }
}
return docs;
}
function pass() {
var docs = allDocs(), found = null;
for (var p = 0; p < docs.length; p++) { var r = sweep(docs[p]); if (r && !found) found = r; }
return found;
}
function label(el) { return '"' + (el.innerText || el.value || '').replace(/\s+/g, ' ').trim().slice(0, 28) + '"'; }
var r0 = pass();
if (r0) hits.push(label(r0));
var c = 0;
var timer = setInterval(function () {
var r = pass();
if (r) hits.push(label(r));
if (++c < 3) return;
clearInterval(timer);
if (hits.length) toast('Cookies refusés : ' + hits.join(' + '), true);
else if (blocked) toast("Bandeau dans une iframe d'un autre domaine : un bookmarklet ne peut pas y entrer.", false);
else toast('Aucun bouton de refus trouvé sur cette page.', false);
}, 550);
})();