8
私はちょうどのようなWebViewの中に外部のウェブページにカスタムCSSを適用するには、外部ウェブページにカスタムCSSを注入する方法アンドロイド - WebViewの
webView.loadUrl("<style>body {font-size:15px;}</style>");
webView.loadUrl("http://www.stackoverflow.com");
私はちょうどのようなWebViewの中に外部のウェブページにカスタムCSSを適用するには、外部ウェブページにカスタムCSSを注入する方法アンドロイド - WebViewの
webView.loadUrl("<style>body {font-size:15px;}</style>");
webView.loadUrl("http://www.stackoverflow.com");
String html = ... // load manually
// insert the style to <head>
webview.loadData(html, "text/html", null);
あなたはjavascript:
URL機能を使用してカスタムJSを注入することができ従ってください。ここで
は、Javaからこれを使用してCSSルールを追加することができます方法は次のとおりです。
/**
* Creates a CSS element in the <head> section of the Web page and assigns it
* to a `customSheet` JS variable
*/
private final static String CREATE_CUSTOM_SHEET =
"if (typeof(document.head) != 'undefined' && typeof(customSheet) == 'undefined') {"
+ "var customSheet = (function() {"
+ "var style = document.createElement(\"style\");"
+ "style.appendChild(document.createTextNode(\"\"));"
+ "document.head.appendChild(style);"
+ "return style.sheet;"
+ "})();"
+ "}";
/**
* Adds CSS properties to the loaded Web page. A <head> section should exist when this method is called.
* The Web view should be configured with `.getSettings().setJavaScriptEnabled(true);`
*
* @param webView Web view to inject into
* @param cssRules CSS rules to inject
*/
void injectCssIntoWebView(WebView webView, String... cssRules) {
StringBuilder jsUrl = new StringBuilder("javascript:");
jsUrl
.append(CREATE_CUSTOM_SHEET)
.append("if (typeof(customSheet) != 'undefined') {");
int cnt = 0;
for (String cssRule : cssRules) {
jsUrl
.append("customSheet.insertRule('")
.append(cssRule)
.append("', ")
.append(cnt++)
.append(");");
}
jsUrl.append("}");
webView.loadUrl(jsUrl.toString());
}
そしてここでは、上記の方法の使用例です:
@Override
public void onPageFinished(WebView webView, String url) {
// Several people probably worked hard on the design of this Web page, let's hope they won't see what's next
injectCssIntoWebView(
webView,
"div { border: 4px solid yellow; }",
"p { border: 4px solid green; }",
"a { border: 4px solid black; }",
"img { border: 4px solid blue; }"
);
}
はあなたの詳細をしていただけますか? –
@ An-droidの例:String html = download( "http://www.stackoverflow.com"); html = html.replaceFirst( ""、 ""); webview.loadData(html、 "text/html"、null); – xfx