Android - 在 WebView.loadUrl() 之前在 LocalStorage 上保存值
Android - save value on LocalStorage before WebView.loadUrl()
在 WebView 上加载 URL 之前,我想在浏览器 LocalStorage 中设置一个值。
到目前为止,我设法设置此值的唯一方法是在加载页面之后。这就是我可以设置值的方式:
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadUrl("javascript: LocalStorage.set('namespace', 'key', 'value');");
}
}
我确实尝试覆盖方法 onPageStarted()
,但未存储该值。
如何在调用 browser.loadUrl()
之前设置这个 key/value? url/page 取决于此值,因此我需要在加载页面之前设置该值。
您可以做的是将 javascript
的重定向设置为实际的 url 并使用 webview.loadData()
.
加载 javascript 加重定向
String injection = "<html><head><script type='javascript'>LocalStorage.set('namespace', 'key', 'value');window.location.replace('YOUR_URL_HERE');</script></head><body></body></html>";
webview.loadData(injection, "text/html", null);
请注意,您可能需要先将其保存到文件中才能运行:请参阅
您可以为此使用 WebViewClient.onPageStarted()。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
String js = "window.localStorage.setItem('key', 'value');";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(js, null);
} else {
webView.loadUrl("javascript:" + js);
}
}
});
在 WebView 上加载 URL 之前,我想在浏览器 LocalStorage 中设置一个值。
到目前为止,我设法设置此值的唯一方法是在加载页面之后。这就是我可以设置值的方式:
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadUrl("javascript: LocalStorage.set('namespace', 'key', 'value');");
}
}
我确实尝试覆盖方法 onPageStarted()
,但未存储该值。
如何在调用 browser.loadUrl()
之前设置这个 key/value? url/page 取决于此值,因此我需要在加载页面之前设置该值。
您可以做的是将 javascript
的重定向设置为实际的 url 并使用 webview.loadData()
.
String injection = "<html><head><script type='javascript'>LocalStorage.set('namespace', 'key', 'value');window.location.replace('YOUR_URL_HERE');</script></head><body></body></html>";
webview.loadData(injection, "text/html", null);
请注意,您可能需要先将其保存到文件中才能运行:请参阅
您可以为此使用 WebViewClient.onPageStarted()。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
String js = "window.localStorage.setItem('key', 'value');";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(js, null);
} else {
webView.loadUrl("javascript:" + js);
}
}
});