Android загружает внешний локальный файл JavaScript в WebView - PullRequest
0 голосов
/ 25 марта 2011

В Android 2.2 WebView я загружаю локальный HTML-файл, который имеет ссылку на файл JavaScript (находится в той же папке, что и HTML-файл).Локальный HTML-файл успешно загружается, но указанный локальный файл JavaScript не загружается, и я получаю эту ошибку в журнале LogCat:

03-25 16: 48: 57.965: ОШИБКА / веб-консоль (10865): SyntaxError: Разбор ошибки в файле: ///data/data/com.mydomain.myapp/test.js: 91

Номер строки для ошибки - последняя строка для файла и путь вжурнал ошибок - правильный путь для файла js.Конечно, все работает как положено в Chrome.Вот фрагмент HTML-файла

<html>
<head>
    <title>My Title</title>
    <meta name = "viewport" content = "width = device-width">
    <meta name = "viewport" content = "initial-scale = 1.0">
    <script type="text/javascript" src="test.js"></script>
    <script type="text/javascript">
        button_onclick = function() {};
    </script>

Ответы [ 3 ]

2 голосов
/ 26 марта 2011

Я обнаружил, что эта ошибка связана с упаковкой файла js. Приложение читает файл из базы данных ресурсов SQLite при инициализации и записывает прочитанный файл в локальную файловую систему устройства. Файл js сохраняется в базе данных SQLite в виде текста с помощью Firefox SQLite Manager. Когда я сохраняю файл js в SQLite Manager как BLOB, а не как текст, тогда все работает как положено, и WebView может успешно загрузить файл js из локальной файловой системы устройства. Это не имеет значения для html-файлов, но для js-файлов анализатор ищет что-то в конце файла, и если он не находит его, он игнорирует js-файл

Я подозреваю, что это может быть связано с отсутствием символов конца файла, которые по какой-то причине не добавляются, когда я пишу файл с использованием выходного потока Java, когда входной поток ресурса не содержит символов конца файла.

0 голосов
/ 25 марта 2011
0 голосов
/ 25 марта 2011

Я бы посмотрел ссылку WebView в документации для Android. Из документа:

По умолчанию WebView не предоставляет виджеты, подобные браузеру, не включает JavaScript и ошибки веб-страниц игнорируются. Если ваша цель - отображать только HTML как часть вашего пользовательского интерфейса, это, вероятно, хорошо; пользователю не нужно взаимодействовать с веб-страницей после ее чтения, а веб-странице не нужно взаимодействовать с пользователем. Если вам действительно нужен полноценный веб-браузер, то вы, вероятно, захотите вызвать приложение браузера с намерением URL, а не показывать его с WebView

Однако вы можете включить его в веб-просмотре через setJavaScriptEnabled().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...