Использование WebView.Load () для чтения динамического HTML со ссылками на библиотеки JS? - PullRequest
1 голос
/ 22 марта 2012

Я пытаюсь написать класс, который будет возвращать строку HTML с Javascript для использования в WebView.Возврат HTML и Javascript работает хорошо, но у меня проблемы с загрузкой библиотек с возвращенным HTML.Например, это хорошо работает:

public static String helloWorld() {
    String html;
    html =  "<!DOCTYPE html>" +
            "<html>" +
            "<head>" +
            "<title>" +
            "</title>" +
            "</head>" +
            "<body>" +
            "<script>" +
            "document.write(\"Hello, World\");" +
            "</script>" +
            "</body>" +
            "</html>";
    return html;
}

Однако это не так:

public static String helloWorld() {
    String html;
    html =  "<!DOCTYPE html>" +
            "<html>" +
            "<head>" +
            "<title>" +
            "</title>" +
            "<script src=\"../assets/src/external_script.js\"></script>" +
            "</head>" +
            "<body>" +
            "<script>" +
            "external_script_function();" +
            "</script>" +
            "</body>" +
            "</html>";
    return html;
}

Я предполагаю, что путь к файлу для импорта external_script.js неверен?Использование WebView.LoadUrl(myLocalHtmlFile); работает при использовании другого файла JS.Как бы я сделал, чтобы эта работа работала правильно?Или, в качестве альтернативы, есть ли лучший способ достичь аналогичных результатов?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Вам необходимо передать папку ресурсов в WebView в качестве базового URL. Как это:

MyWebView.loadDataWithBaseURL("file:///android_asset/", helloWorld());

И тогда тег <script> будет выглядеть так:

<script src="src/external_script.js"></script>

Предполагается, что библиотека находится в assets/src. И да, вам нужно включить JavaScript, как подсказывает триада.

0 голосов
/ 22 марта 2012

Поскольку вы пишете ресурсы, я предполагаю, что вы пытаетесь загрузить файл, который вы поместили в Eclipse, или какую-либо IDE, которую вы используете, которая связана с вашим приложением.Это хранится в вашем APK и AFAIK, оно не распаковывается в рабочий каталог вашего приложения.

Это означает, что вам придется вручную поместить его на SD-карту или внутреннюю память или загрузитьвнутренне и динамически вставьте его в окончательный HTML, прежде чем отправить его в WebView.

Лично я бы пошел на второй метод, потому что он делает меньше беспорядка.

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