在 Android 中不使用 webview 执行 javascript

Execute javascript without webview in Android

我正在尝试在我的 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,这不是纯 [=26] 的一部分=].它需要浏览器实现。

您有没有使用隐藏的 WebView 而只是注入您的代码的原因?

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

为了将来的参考,有一个图书馆 by square 为此目的。 https://github.com/square/duktape-android

此库是 Duktape、可嵌入 JavaScript 引擎的包装器。
您可以 运行 javascript 而无需使用 WebView。

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