Ответ 1
Включен ли JavaScript в ваш веб-просмотр...?
WebView.getSettings().setJavaScriptEnabled(true);
Я делаю webapp, и я использую jQuery.
Я создал простое приложение для Android с WebView, и я загружаю свой URL: www.mydomain.com
В mydomain.com у меня есть:
<script src="js/jquery_1.4.2_min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
alert("Hii!!!!");
});
</script>
Если я нахожусь в mydomain из браузера, предупреждение показывает, что это хорошо. Но если я нахожусь в своем родном приложении, он не отображается. Что я могу сделать?
Включен ли JavaScript в ваш веб-просмотр...?
WebView.getSettings().setJavaScriptEnabled(true);
Я не эксперт с родным Android, но мы только что разработали приложение, использующее сайт на основе jQuery в веб-обзоре. Вам нужно setJavaScriptEnabled (true) в вашем классе активности, а jQuery запускает jsut fine. Однако ваш пример с предупреждением ( "Привет" ); не будет работать, потому что веб-просмотры Android не поддерживают оповещения по умолчанию. Он может быть включен с небольшим количеством поисковых запросов... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/
В качестве альтернативы мы добавили пользовательскую функцию showAlert js для отображения довольно пользовательских уведомлений.
Старый вопрос, но я думал, что все равно добавлю свои 2cents.
Предупреждения Javascript работают в веб-просмотре, но сначала вы должны установить клиент веб-хрома.
webView.setWebChromeClient(new WebChromeClient())
Где находится ваш js/jquery_1.4.2_min.js script? Если он находится в вашем каталоге активов, то вы должны инициализировать webView, предоставляя ему каталог ресурсов как baseUrl:
webView.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8", null);
или
webView.loadUrl("file:///android_asset/file.html");
Вы можете попытаться создать простой .js файл с простой функцией, например
function dummy(document) { document.write("Hooray it works"); }
и попытайтесь получить доступ к фиктивной функции в вашем html, чтобы проверить, включен ли .js файл.
Вам могут понадобиться две вещи:
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
Проблема заключается в расположении файла jquery.js. Отправьте некоторый код о том, как вы настраиваете webView. Это даст нам несколько советов.
В качестве примера рассмотрим следующее: http://techdroid.kbeanie.com/2010/10/android-webview-javascript-and-css.html
Попробуйте следующее: создайте основную активность.
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView webView;
private JavaScriptInterFace javaScriptInterFace;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView);
javaScriptInterFace=new JavaScriptInterFace(this);
webView.addJavascriptInterface(javaScriptInterFace, "AndroidFunction");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/test.html");
webView.setWebViewClient(new WebViewClient());
}
}
Создайте еще один java файл с именем JavaScriptInterFace
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
public class JavaScriptInterFace {
Context mContext;
JavaScriptInterFace(Context c) {
mContext = c;
}
public int changeImage(){
Log.e("Got", "it"+2);
return 2;
}
public void showToast(){
Toast.makeText(mContext, "hi", Toast.LENGTH_SHORT).show();
}
}
создайте файл html, разместив его в папке с ресурсом проекта
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; user-scalable=0;" />
<title>My HTML</title>
</head>
<body>
<p id="mytext">Hello!</p>
<img alt="show" src="ic_left_arrow.png" id="myImage"/>
</br>
<input type="button" value="Change" onClick="changeImage()" />
<input type="button" value="Show tost" onClick="showToast()" />
<script language="javascript">
function changeImage() {
i=AndroidFunction.changeImage();
if(i===2){
document.getElementById('mytext').innerHTML = i;
document.getElementById('myImage').src="ic_right_arrow.png";
}
}
function showToast() {
AndroidFunction.showToast();
}
</script>
</body>
</html>
Поместите необходимые изображения в папку ресурса вашего проекта вместе с указанным выше html файлом.
Правильная последовательность -
webview.getSettings() setJavaScriptEnabled (истина). webview.loadUrl( "Файл:///android_asset/xxx.html" );
По ошибке не помещайте свою последовательность вызовов, как показано ниже
webview.loadUrl( "Файл:///android_asset/xxx.html" ); . Webview.getSettings() setJavaScriptEnabled (истина);