2015-03-17 2 views
4

Я пытаюсь выполнить JS-fonction в своем приложении для Android. Функция находится в файле .js на веб-сайте.Выполнение javascript без веб-просмотра в Android

Я не использую webview, я хочу выполнить функцию JS, потому что он отправляет запрос, который я хочу.

В консоли в моем браузере я просто должен сделать question.vote(0);, как я могу сделать это в своем приложении?

ответ

5

Вы можете выполнить JavaScript без WebView. Вы можете использовать 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, который не является частью чистого JavaScript. Для этого требуется реализация браузера.

Есть ли причина, по которой вы не используете скрытый WebView и просто вводите свой код?

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

Для справки в будущем для этой цели есть библиотека по квадрату. https://github.com/square/duktape-android

Эта библиотека является оберткой для Duktape, встраиваемого JavaScript-движка.
Вы можете запускать javascript без участия в WebView.

Duktape совместим с обычаем E5/E5.1, поэтому основные вещи могут быть выполнены с этим.

+1

Каковы преимущества duktape-android для LiquidCore (ранее известный как Android)? – Roel

Смежные вопросы