Règles basées sur le temps : mode focus, teinte nocturne et mises en page de week-end
Une règle dans JustZix correspond à un motif d'URL — elle se déclenche quand la barre d'adresse correspond, et c'est tout. Il n'y a pas d'interrupteur « seulement en semaine », pas de champ de planification. Mais il n'en faut pas un : le corps de la règle est du JavaScript, et le JavaScript peut lire l'horloge. Ce guide montre comment faire en sorte qu'une seule règle se comporte d'une façon pendant les heures de travail et d'une autre la nuit, le week-end, ou après 18h — le tout avec quelques lignes de logique de date.
Pourquoi le temps est une vérification côté JS
Voici le modèle mental clé : les règles correspondent à l'URL, le JavaScript décide du temps. Le motif d'URL de la règle contrôle où le script s'exécute ; une vérification de temps en haut du script contrôle s'il fait quelque chose. La règle s'injecte toujours sur chaque page correspondante — elle sort juste tôt quand l'horloge le dit. Une fois que cela fait tilt, chaque exemple ci-dessous a la même forme : lire new Date(), comparer, puis soit agir, soit retourner.
Lire l'horloge
Tout commence par new Date(), qui vous donne l'heure locale actuelle dans le navigateur. Les deux méthodes dont vous avez le plus besoin :
const now = new Date();
const hour = now.getHours(); // 0-23, heure locale
const day = now.getDay(); // 0 = dimanche ... 6 = samedi
const isWeekend = day === 0 || day === 6;
const isWorkHours = hour >= 9 && hour < 17; // 09:00-16:59
const isNight = hour >= 21 || hour < 7; // 21:00-06:59
Notez que getHours() est local à la machine de l'utilisateur, ce qui est exactement ce que vous voulez pour « mes heures de travail ». Et la vérification de nuit utilise || car la plage passe minuit — un piège classique d'erreur de un.
Le motif de garde
Chaque règle basée sur le temps suit le même gabarit : calculer une condition, et return immédiatement si elle n'est pas remplie. Enveloppez-la dans une IIFE pour que le return précoce soit légal.
(() => {
const hour = new Date().getHours();
// Ne fait quelque chose que pendant les heures de travail
if (!(hour >= 9 && hour < 17)) return;
// ...l'effet reel de la regle vient ici...
})();
C'est toute l'astuce. Le script s'exécute toujours ; la garde décide si le corps s'exécute. Tout ce qui suit ne change que la condition et le corps.
Recette 1 — mode focus pendant les heures de travail
Ciblez une règle sur les sites qui dévorent votre journée — réseaux sociaux, actualités, vidéo — avec un motif d'URL, puis faites en sorte que le script vide la page pendant les heures de travail avec un message poli.
(() => {
const hour = new Date().getHours();
const day = new Date().getDay();
const working = day >= 1 && day <= 5
&& hour >= 9 && hour < 17;
if (!working) return;
document.documentElement.innerHTML =
'<body style="margin:0;display:flex;height:100vh;'
+ 'align-items:center;justify-content:center;'
+ 'font:600 22px system-ui;background:#0f172a;color:#e2e8f0">'
+ 'Focus mode — this site is off until 17:00</body>';
// Empeche la page de faire autre chose
window.stop();
})();
Créez une telle règle par distraction, ou utilisez un motif large dans un dossier dédié. En dehors de 9h-17h, la garde échoue et le site est complètement normal — pas de blocage permanent, pas d'application séparée à désactiver.
Recette 2 — teinte chaude nocturne
La navigation tard le soir est plus reposante pour les yeux avec une surcouche chaude et atténuée. Celle-ci injecte du CSS depuis du JS pour qu'elle puisse être conditionnelle — une simple règle CSS ne pourrait pas vérifier l'heure.
(() => {
const hour = new Date().getHours();
if (!(hour >= 21 || hour < 7)) return;
const tint = document.createElement('div');
Object.assign(tint.style, {
position: 'fixed', inset: '0',
background: 'rgba(255, 147, 41, 0.18)',
pointerEvents: 'none',
zIndex: 2147483600,
mixBlendMode: 'multiply',
});
document.documentElement.appendChild(tint);
// Attenue aussi un peu la luminosite globale
document.documentElement.style.filter = 'brightness(0.9)';
})();
La surcouche utilise pointer-events: none pour ne jamais bloquer les clics, et mix-blend-mode: multiply pour réchauffer les couleurs plutôt que de simplement les embrumer. Appliquez-la avec un motif d'URL large pour un mode nuit à l'échelle du site.
Recette 3 — une mise en page réservée au week-end
Peut-être qu'un tableau de bord de travail devrait avoir l'air plus calme le samedi et le dimanche — marges plus larges, couleurs atténuées, pas de badges rouge urgent. Combinez le motif d'URL (le tableau de bord) avec une vérification de week-end.
(() => {
const day = new Date().getDay();
if (day !== 0 && day !== 6) return; // en semaine : ne fait rien
const css = document.createElement('style');
css.textContent = `
body { max-width: 900px; margin: 0 auto; }
.badge-urgent, .alert-red { filter: grayscale(1); }
.notifications { display: none !important; }
`;
document.head.appendChild(css);
})();
En semaine, la garde retourne et le tableau de bord est lui-même normalement. C'est la façon la plus propre d'obtenir un « mode week-end » sans maintenir deux règles.
Recette 4 — après 18h, masquer les outils de travail
L'inverse du mode focus : le soir, décourager doucement l'ouverture des applications de travail. Ciblez la règle sur vos outils de travail et vérifiez la fenêtre du soir.
(() => {
const now = new Date();
const hour = now.getHours();
const day = now.getDay();
// Apres 18:00, ou n'importe quand le week-end
const offHours = hour >= 18 || day === 0 || day === 6;
if (!offHours) return;
const banner = document.createElement('div');
banner.textContent = 'It is after hours. Sure you need this now?';
Object.assign(banner.style, {
position: 'fixed', top: '0', left: '0', right: '0',
background: '#b45309', color: '#fff',
font: '600 14px system-ui', textAlign: 'center',
padding: '10px', zIndex: 2147483600,
});
document.body.appendChild(banner);
document.body.style.filter = 'grayscale(0.4)';
})();
Un coup de pouce doux — une bannière et une légère désaturation — plutôt qu'un blocage dur. Ajustez selon le goût ; la structure est identique aux autres.
Combiner le temps avec les motifs d'URL
Les deux couches se composent naturellement :
- Le motif d'URL choisit les sites —
*://*.twitter.com/*,https://news.example.com/*, ou*pour partout. - La garde de temps choisit les moments — heures de travail, nuit, week-end, soirée.
- Regroupez plusieurs règles basées sur le temps dans un seul dossier pour pouvoir basculer tout le régime en un clic.
Vous pouvez aussi le filtrer par minute pour un contrôle plus fin (getMinutes()), ou par date pour une règle « jusqu'à la fin du mois » (getDate(), getMonth()).
Choses à garder à l'esprit
- L'horloge est l'heure locale de l'utilisateur — parfait pour la planification personnelle, mais elle suit la machine. Voyagez à travers les fuseaux horaires et la règle se décale avec vous.
- La vérification s'exécute au moment de l'injection — quand la page se charge. Une page laissée ouverte à travers une frontière (disons à travers 17h) ne se réévaluera pas tant que vous ne rechargez pas. Ajoutez une re-vérification par
setIntervalsi cela compte. - Testez les plages qui passent minuit — la fenêtre de nuit
hour >= 21 || hour < 7est l'endroit le plus facile pour introduire un bug. - Gardez les effets réversibles — préférez ajouter une surcouche ou un élément de style plutôt que de détruire le DOM, sauf si un blocage dur est le but.
À voir aussi
- Désactiver les dark patterns et la fausse urgence — plus de règles JS qui remodèlent le comportement d'un site.
- Une surcouche de débogage responsive — un autre outil JavaScript injecté pratique.
Les règles correspondent à l'URL, mais le JavaScript possède l'horloge — et c'est tout ce qu'il vous faut pour les modes focus, les teintes nocturnes et les mises en page de week-end. Installez JustZix et laissez vos règles donner l'heure.
Notez cet article
Aucune note — soyez le premier.