我目前正在开发一个小型应用程序,只需将一个网页加载到webview中,我希望能够在使用此应用程序浏览时使该网页看起来与众不同。
这个页面使用一个.css,我想使用我自己的.css版本而不是原版。或者只是用我的原版替换部分版本(使用原版然后用我的版本覆盖它)。
是否可以修改页面的源代码(在加载之前可选择),这样我可以更改一些样式以使网页看起来不同?
只是解释一下:
我想要改变
<link rel="stylesheet" type="text/css" href="original.css">
到
<link rel="stylesheet" type="text/css" href="original.css">
<link rel="stylesheet" type="text/css" href="http://www.something.com/edited.css">
我正在使用Xamarin Studio,C#Android WebView项目,顺便说一下.. 此外,这很可能被称为副本:Override web page style in Android WebView但它从未被回答,所以它对我没有帮助..
答案 0 :(得分:0)
addJavascriptInterface (Object object, String name)
?
您可以注入代码来操纵DOM。这可能是一个坏主意,因为它在很多方面都是安全问题。
WebSettings对象更少侵入性和更安全,允许您更改一些表示方面:http://developer.android.com/reference/android/webkit/WebSettings.html
在此领域,另一个需要探索的工具是创建和设置WebViewClient子类:http://developer.android.com/reference/android/webkit/WebViewClient.html
只有几条途径可以探索。
答案 1 :(得分:0)
您可以使用Javascript注入您的CSS。 WebView
完成加载后,您可以注入以下javascript:
var link = document.createElement("link");
link.href = "http://example.com/mystyle.css";
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(link);
所以你的最终Java代码看起来像这样:
String jsToInject = "var link=document.createElement('link');link.href='http://example.com/mystyle.css';link.type ='text/css'; link.rel ='stylesheet';document.getElementsByTagName('head')[0].appendChild(link);";
myWebView.loadUrl("javascript:" + jsToInject);