我在带有webview的自定义活动中显示html。我压倒一切
public boolean shouldOverrideUrlLoading(WebView view, String url) {
截取某些网址。现在我希望能够找到关于该URL周围的html的更多细节。
在我的情况下,我想获取包含url的html元素。例如。如果网址来自
<a href="http://stackoverflow.com/users/136445/manfred-moser">Manfred Moser</a>
我希望能够以某种方式从锚标签中检索“Manfred Moser”值。有没有办法做到这一点。我发现你无法从Java访问DOM。
我能想到的一种方法是单独下载页面并在将其加载到webview之前解析它们。然而,这是一个丑陋的黑客充其量。还有更好的方法吗?
答案 0 :(得分:2)
有一个肮脏的黑客:
绑定一些Java对象,以便可以使用WebView从Javascript调用它:
addJavascriptInterface(javaObjectExposed, "JSname")
强制执行现有页面中的javascript
WebView.loadUrl("javascript:window.JSname.passData("some data");");
此处描述:http://lexandera.com/2009/01/extracting-html-from-a-webview/
注意:这是一个安全风险 - 此网页中的任何JS代码都可以访问/调用绑定的Java对象。最好将一些一次性cookie传递给loadUrl()并将它们传回给你的Java对象,以检查它是你的代码进行调用。
答案 1 :(得分:2)
除了@Peter Knego的方法之外,还有相反的方法:
按照步骤#1
addJavascriptInterface()
对于您的链接,使用onClick
标记上的<a>
属性从步骤#1中调出Java对象的某些方法,其中Java对象转向并加载URL进入WebView
,并提供您想要的任何类型的识别信息。
我只想说,无法从shouldOverrideUrlLoading()
获取您想要的信息。