0

J'essaie de masquer \ afficher les barres de défilement sur les pages via mon extension Chrome.Masquer/afficher la barre de défilement de l'extension chrome

Je cache en insérant ce CSS background.js fichier:

::-webkit-scrollbar { 
    display: none !important; 
} 

::-webkit-scrollbar-button { 
    display: none !important; 
} 

et j'essaie de le montrer à nouveau en insérant ce CSS fichier background.js:

::-webkit-scrollbar { 
    display: block !important; 
} 

::-webkit-scrollbar-button { 
    display: block !important; 
} 

œuvres Hiding , mais je suis incapable de le restaurer après. Lorsque j'inspecte la page via Chrome DevTools, il apparaît que les deux CSS insérés sont actifs en même temps.

Existe-t-il un autre moyen de le faire? Une chose importante à noter est que cela devrait fonctionner sur n'importe quelle page, donc je suis capable de supprimer et de restaurer les barres de défilement de n'importe quelle page CSS est insérée.

Je suis ouvert pour tout autre chemin, JavaScript aussi.

+0

S'il vous plaît [modifier] la question d'être sur-sujet: inclure une [mcve] que * duplique le problème *. Pour les extensions Chrome ou Firefox WebExtensions, vous devez presque toujours inclure votre * manifest.json * et une partie de l'arrière-plan, du contenu et/ou des scripts contextuels/HTML, et souvent des HTML/scripts de pages Web. Les questions demandant l'aide au débogage ("pourquoi mon code ne fonctionne-t-il pas comme je veux?") Doivent inclure: (1) le comportement souhaité, (2) un problème ou une erreur spécifique et (3) le code le plus court nécessaire pour le reproduire * dans la question elle-même *. S'il vous plaît voir aussi: [Quels sujets puis-je poser ici?] (/ Help/on-topic), et [ask]. – Makyen

Répondre

0

Cet exemple peut vous donner un indice sur la façon de le faire:

https://jsfiddle.net/PVZB8/139/

Il utilise CSS et JavaScript pour obtenir le résultat, mais il semble que vous pouvez y parvenir en utilisant uniquement CSS (exemple donnée sur jsFiddle):

div.mousescroll { 
    overflow: hidden; 
} 
div.mousescroll:hover { 
    overflow-y: scroll; 
} 
+0

Cette solution est limitée à div simple, je l'ai besoin pour travailler pour la page entière et pour chaque page. De plus, j'ai besoin de préserver la fonctionnalité de flèches de défilement/clavier de la souris, afin que l'utilisateur puisse faire défiler même si les barres de défilement sont cachées – kecman

0

J'accompli ce par-script de contenu. Ce code supprime les barres de défilement et vous permet encore de faire défiler avec les boutons mouseWheel ou clavier:

var styleElement = document.createElement('style'); 
    styleElement.id = 'remove-scroll-style'; 
    styleElement.textContent = 
     'html::-webkit-scrollbar{display:none !important}' + 
     'body::-webkit-scrollbar{display:none !important}'; 
    document.getElementsByTagName('body')[0].appendChild(styleElement); 

Et ce code restaure les barres de défilement:

$('#remove-scroll-style').remove(); 
+0

N'utilisez pas '.innerHTML' ici. Utilisez '.textContent'. Pourquoi mélangez-vous JavaScript et jQuery? Pour le peu que vous faites ici, vous * vraiment * ne devriez pas charger jQuery (85KiB de code minimisé) juste pour sauvegarder quelques caractères en utilisant JavaScript en vanilla: 'document.getElementById ('remove-scroll-style').(); ' – Makyen

+0

J'ai besoin de jQuery pour d'autres choses, c'est juste une partie du code. Et jQuery est chargé localement à partir de l'extension Chrome, ce n'est donc pas un problème. Merci pour les conseils .textContent, j'ai oublié à ce sujet. – kecman