Подтвердить что ты не робот

JQuery не работает в WebView

Я попытался включить файлы JQuery в активы/скрипты и в Интернете, но диалоговое окно предупреждения не отображается. Я получил выход журнала и сделал его output.html, он работает в Windows (так странно!). В чем проблема с WebView?

public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    webView = (WebView) findViewById(R.id.webView);
    final String s = "<html><head>" +
    "<link href=\"css/my.css\" type=\"text/css\" rel=\"stylesheet\" />" +
    "<script src=\"scripts/jquery-1.6.2.min.js\" rel=\"stylesheet\" type=\"text/javascript\"></script>" +
    "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js\" type=\"text/javascript\"></script>" +
    "<script>" +
    "$(document).ready(function(){ alert('hello'); });" +
    "</script>" +
    "</head><body><div>All I hear is raindrops." +
    "Falling on the rooftop. Oh baby tell me why you have to go. " +
    "Cause this pain I feel you won't go away. And today, " +
    "I'm officially missing you.</div></body></html>";
    webView.getSettings().setJavaScriptEnabled(true);
    Log.d("Something", s);
    webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null);
}

Это вывод журнала после добавления расширения ".html". Он работает в Firefox, но не работает в WebView.: (

<html>
<head>
<link href="css/my.css" type="text/css" rel="stylesheet" />
<script src="scripts/jquery-1.6.2.min.js" rel="stylesheet" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js" type="text/javascript"></script>
<script>$(document).ready(function(){ alert('hello'); });</script>
</head>
<body>
    <div>
    All I hear is raindrops.Falling on the rooftop. Oh baby tell me why you have to go. Cause this pain I feel you won't go away. And today, I'm officially missing you.
    </div>
</body>
</html>
4b9b3361

Ответ 1

webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null);

изменить на

webView.loadDataWithBaseURL(getAssets(), s, "text/html", "utf-8", null);

чтобы получить файл актива, вам нужно будет получить доступ к пути к ресурсам приложения. Приложение является пользователем на Android, поэтому доступ к пути невозможен с помощью каталога "file://".

Ответ 2

Для этого вам понадобится файл jquery.js в папке ваших ресурсов/скриптов.

скрипты/JQuery-1.6.2.min.js

Это должно работать.

Ответ 3

setPluginsEnabled в настройках WebView до true.

Ответ 4

Как уже упоминалось в Android WebView не загружает jQuery:

Где находятся ваши скрипты /jquery -1.6.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 файл.

Ответ 5

Полагаю, некоторые javascript-функции, такие как prompt и alert (всплывающие окна системы), должны быть реализованы вашим кодом. Простое руководство..,

1. Создайте класс Jscalls.java

public class Jscalls {

    Context mContext;
    Jscalls(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    public void alert(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }    
}

2. В вашей программе добавьте, webView.addJavascriptInterface(new Jscalls(this), "Android");

3. В html-страницах вместо alert("hello") используйте Android.alert("hello")

Надеюсь, что он работает:)

Ответ 6

Вы должны указать полный путь для загрузки javascript и css, например

<link href="#" onclick="location.href='http://yourdomain.com/css/my.css'; return false;" type="text/css" rel="stylesheet" />