在Android中执行javascript而不使用webview

Execute javascript without webview in Android

本文关键字:webview javascript Android 执行      更新时间:2023-09-26

我正试图在我的Android应用程序中执行JS函数。该函数位于网站上的.js文件中。

我不使用webview,我想执行JS函数,因为它发送了我想要的请求。

在浏览器的控制台中,我只需要执行question.vote(0);,如何在应用程序中执行?

更新2018:AndroidJSCore已被基于V8的LiquidCore取代。它不仅包括V8引擎,而且所有Node.js都可用。

您可以在没有WebView的情况下执行JavaScript。您可以使用AndroidJSCore。下面是一个如何做到这一点的快速示例:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://your_website_here/file.js");
HttpResponse response = client.execute(request);
String js = EntityUtils.toString(response.getEntity());
JSContext context = new JSContext();
context.evaluateScript(js);
context.evaluateScript("question.vote(0);");

然而,这很可能在WebView之外不起作用,因为我认为您不仅依赖JavaScript,还依赖AJAX,AJAX不是纯JavaScript的一部分。它需要浏览器实现。

你为什么不使用隐藏的WebView并简单地注入你的代码?

// Create a WebView and load a page that includes your JS file
webView.evaluateJavascript("question.vote(0);", null);     

为了将来的参考,有一个用于此目的的库。https://github.com/square/duktape-android

这个库是Duktape的包装器,可嵌入JavaScript引擎
您可以运行javascript而不必摆弄WebView。

Duktape是符合Ecmascript E5/E5.1的,所以基本的东西可以用它来完成。