我试图将一些javascript函数调用在一个html页面中运行android webview.很简单,什么代码尝试下面的事情-从Android应用程序,调用一个javascript带有测试消息,它依次调用Java函数回,在Android应用程序,通过敬酒显示测试消息功能.
该javascript功能如下:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Run Code Online (Sandbox Code Playgroud)
从WebView,我试着javascript通过以下方式调用,没有运气:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Run Code Online (Sandbox Code Playgroud)
我确实启用javascript了WebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Run Code Online (Sandbox Code Playgroud)
并且继承了Java班级
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间在谷歌上搜索我可能做错了什么.我发现的所有例子都使用这种方法.有没有人在这里看错了? …
假设我们有一个标准的登录页面,如下所示:
我们可以像这样使用using 或plain中的HTML元素:DOMjQueryJavaScript
换句话说,获取元素在网页中的像素位置的方法非常简单,方法是使用element.getBoundingClientRect():
Run Code Online (Sandbox Code Playgroud)var rect = element.getBoundingClientRect(); console.log(rect.top, rect.right, rect.bottom, rect.left);
因此,我们可以从控制台或通过网络应用程序以编程方式进行操作。
现在,假设我们随时都有一个Android浏览器(Chrome / Mozilla / WebView)。我可以URL在浏览器中检索网页的。在这种情况下:
https://login.microsoftonline.com/
所以我的问题是,给定登录页面的URL,我如何类似地获得对上相同输入字段的访问权限Android browser?
我需要能够HTML在Android浏览器中访问网页的元素,并计算其像素位置。作为输入,我具有任何Android浏览器中的网页URL。
我说的是在Android运行时中通过Android应用执行此操作,即以编程方式使用Java / JS代码。
如果有人需要DOM页面的结构为文本,则可以使用以下(Java)代码以编程方式获取它:
URL url;
HttpURLConnection urlConnection;
String DOMContent = null;
try {
url = new URL("https://login.microsoftonline.com/");
urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK){
DOMContent = readStream(urlConnection.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch …Run Code Online (Sandbox Code Playgroud)