![Gibt es eine Möglichkeit, benutzerdefinierte WebKit-Bildlaufleisten zu deaktivieren?](https://rvso.com/image/1302214/Gibt%20es%20eine%20M%C3%B6glichkeit%2C%20benutzerdefinierte%20WebKit-Bildlaufleisten%20zu%20deaktivieren%3F.png)
Gibt es eine Erweiterung, ein benutzerdefiniertes Stylesheet usw., mit dem die Anpassung von Bildlaufleisten in Webkit-basierten Browsern wie Google Chrome deaktiviert oder rückgängig gemacht werden kann? Mir gefallen die einfachen, nativen Bildlaufleisten, aber ich kann scheinbar keine CSS-Kombination finden, mit der sie wiederhergestellt werden können, nachdem sie mit CSS formatiert wurden.
Antwort1
Leider kann das CSS nach der Aktivierung nicht „deaktiviert“ oder rückgängig gemacht werden:
::-webkit-scrollbar kann nicht einfach überschrieben werden, um den Standardstil zu erhalten. Die einzige Möglichkeit besteht darin, alle ::-webkit-scrollbar-Regeln aus dem Code zu entfernen. An diesem Punkt müssen scrollbare Bereiche gezwungen werden, die Bildlaufleisten neu zu zeichnen. Dazu fügen Sie entweder schnell display:none; hinzu und entfernen es oder machen dasselbe mit overflow:hidden; bei scrollbaren Elementen. Das Problem bei der ersten Methode ist, dass die Seite bei jedem Laden der Seite weiß blinkt. Die zweite Methode ist ressourcenintensiv, da sie prüfen müsste, ob ein Element auf der Seite überläuft – nicht ideal.
Der obige Link stammt von einem Skript, das die benutzerdefinierten Leisten vollständig entfernt, sodass keine Bildlaufleiste mehr vorhanden ist.
Antwort2
Öffnen Sie die ausführbare Datei Ihres Webbrowsers in einem binär sauberen Texteditor oder Hex-Editor und ersetzen Sie alle Vorkommen von „webkit-scrollbar“ durch anderen Müll wie „webkit-scrollb4r“. Ich habe dies gerade mit Chrome ausprobiert und es löst das Problem.
Antwort3
Ich habe die Antwort von @bumfo übernommen und dieses Sicherheitsproblem in Chrome behoben:https://stackoverflow.com/questions/49161159/uncaught-domexception-failed-to-read-the-rules-property-from-cssstylesheet
Wenn Sie dies in Ihre Konsole einfügen, erhalten Sie Ihre Bildlaufleisten zurück:
for (var sheetI = 0; sheetI < document.styleSheets.length; ++sheetI) {
var sheet = document.styleSheets[sheetI];
try {
var ruleSet = sheet.rules || sheet.cssRules;
for (var i = 0; i < ruleSet.length; ++i) {
var rule = ruleSet[i];
if (/scrollbar/.test(rule.selectorText)) {
sheet.deleteRule(i--);
}
}
} catch (e) {
console.warn("Can't read the css rules of: " + sheet.href, e);
}
};
Hier ist eine Chrome-Erweiterung mit folgendem:https://chrome.google.com/webstore/detail/default-scrollbar/nkjmoagfbmeafonfhbkeicjdhjlofplo
Und sein GitHub-Repo:https://github.com/ubershmekel/default-scrollbar
Antwort4
Hinweis: Diese Antwort wurde zuletzt im Jahr 2015 getestet und funktioniert möglicherweise nicht in neueren Umgebungen.
Der folgende Code ist ein Benutzerskript, das jede übereinstimmende CSS-Regel entfernt ::-webkit-scrollbar
.
// ==UserScript==
// @name My Fancy Scrollbar Userscript
// @namespace http://your.homepage/
// @version 0.1
// @description enter something useful
// @author You
// @match http://*/*
// @grant none
// ==/UserScript==
[].forEach.call(document.styleSheets, function(sheet) {
for (var i = 0; i < sheet.rules.length; ++i) {
var rule = sheet.rules[i];
if (/::-webkit-scrollbar/.test(rule.selectorText)) {
sheet.deleteRule(i--);
}
}
});