我有一个应用程序,它具有以前存在的基于 Web 的注册过程,我试图在 WebView 中使用它。我需要在 html 中添加一些样式标签,以隐藏一些元素,以便更好地显示我的应用程序中的内容。我可以让它在初始加载时工作,但我不知道如何在 WebView 中从一页到下一页。这是我的工作:
在网站的初始加载时,我"<style>MY STYLES HERE<
在调用之前获取原始 html 并将 /style>" 附加到字符串
wv.loadDataWithBaseURL(url, rawHtml, null, "UTF-8", url);
这非常有效,但是如果用户单击页面上的链接并将另一个页面加载到 WebView 中,则不会调用此代码并且样式标记会丢失。
我假设我需要覆盖 WebViewClient 中的“shouldOverrideUrlLoading”,但我不知道如何从这里截取 html。我想我会尝试类似的东西:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String rawHtml = getRawHtml(url) + "<style>...</style>";
wv.loadDataWithBaseURL(url, rawHtml, null, "UTF-8", url);
}
但这显然会将其发送到拦截负载以开始新负载的无限循环中。
我也尝试过覆盖 onPageFinished 并执行以下操作:
wv.loadUrl("javascript:(function() { ... })()");
这有效,只是它会等到整个页面加载完毕后再执行。这会导致页面显示加载了所有的 UI 元素,然后我试图隐藏的所有元素突然消失。我的最终目标是在移动设备上增强网站的外观和感觉,所以这不是一个选择。
我可以在“shouldOverrideUrlLoading”中做些什么来注入样式标签吗?或者如果没有,我还能尝试什么?