在 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 兼容的,所以基本的东西可以用它来完成。
我正在尝试在我的 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 兼容的,所以基本的东西可以用它来完成。