我可以在WebView中注入什么JavaScript / CSS来仅反转页面背景和白色文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以在WebView中注入什么JavaScript / CSS来仅反转页面背景和白色文本?相关的知识,希望对你有一定的参考价值。

因此,我正在使用不支持暗模式的Flutter的webview_flutter插件。我想做的是拥有一个CSS或JS脚本,可以将其注入到我加载的任何页面中,这样基本上所有白色的东西都会变成黑/暗(例如背景),而所有黑色的东西都会变成黑/暗。白色(如文字)。我想让网站的非黑色/白色完全相同。我该怎么做?

答案

我前一段时间使用userstyles.org上提供的Global Dark样式解决了这个问题:https://userstyles.org/styles/31267/global-dark-style-changes-everything-to-dark。您可以从此处查看CSS,并且可能不需要所有代码,因此可以大幅度减少代码。这是从文件中注入.css的方法:

//inject custom css script (defined below)
//injectCSS3();
String css = await rootBundle.loadString(your_path_here);
var bytes = utf8.encode(css);
var base64Str = base64.encode(bytes);
webView.evaluatejavascript("javascript:(function() {" +
                                  "var parent = document.getElementsByTagName('head').item(0);" +
                                  "var style = document.createElement('style');" +
                                  "style.type = 'text/css';" +
                                  // Tell the browser to BASE64-decode the string into your script !!!
                                  "style.innerhtml = window.atob('" + base64Str + "');" +
                                  "parent.appendChild(style)" +
                                  "})()");

以上是关于我可以在WebView中注入什么JavaScript / CSS来仅反转页面背景和白色文本?的主要内容,如果未能解决你的问题,请参考以下文章

包含 javascript 的图像不会出现在 webView 中

有没有办法在android上有一个webview,我可以在页面加载之前注入css?

在android中将CSS注入带有webview的站点

为啥我的js不能在swift的webview里运行

如何在 iOS webview 的多个页面中注入/评估 JS?

可以在 webview 中使用资产目录中的命名颜色吗?