Ограничение символов HTML TextArea в Android WebView - PullRequest
2 голосов
/ 15 февраля 2011

Я написал HTML-страницу со следующим кодом.

<div id="adsListContainer" style="margin: 5px;">
    <textarea id="txtDesc" rows="20" cols="50"></textarea>
    <br />
    <input id="txtCounts" value="0" size="8" />
    <input type="button" value="Count" onclick="countChars()" />
</div>

Приведенный выше html заключен в файл с именем test.html и отображается в элементе управления Android WebView. Теперь, используя функцию Java и WebView loadURL () , я выполняю javascript, чтобы написать что-то в этой области текста, как показано в следующем коде.

javascript:document.getElementsByTagName("textarea")[0].value += 'anything goes here of not more than 50 chars';void(0);

Даже если подумать, что приведенный выше код работает, и я звоню его много раз, поэтому я могу вставить более 7000 символов в этот элемент textarea.

Java-код, отвечающий за выполнение Javascript для вставки текста (HTML) в textarea, выглядит следующим образом.

int bStart = 0;
int bEnd = 49;
String description = "some huge description including html tags"
int totalChars = description.length() - 1;

while (bStart <= totalChars) {
    if (bEnd > totalChars)
        bEnd = totalChars;

    rv = "javascript:";

    rv += "var tas=document.getElementsByTagName('textarea');"; // description
    rv += "if (tas.length>0) {";
    rv += "var ta=tas[0];";
    rv += "ta.value += '"
           + description.substring(bStart, bEnd)
            .replace("'", "\\'").replace('"', '\"') + "';"; // description
    rv += "}";

    webView.loadUrl(rv + "void(0);");

    bStart += 50;
    bEnd += 50;
}

Хотя приведенный выше код работает, но не идеально. Описание содержит 7245 символов, но в текстовую область веб-страницы вставляется только 6267 символов.

Что-то мне не хватает?

1 Ответ

0 голосов
/ 16 февраля 2011

Я пытался применить вашу проблему только с HTML + JavaScript. Пожалуйста, смотрите эту скрипку .

Как видите, это работает правильно. Итак, я думаю, что проблема может быть с заменой символов escape-последовательности. Обратите внимание, что вы изменяете символ escape-последовательности из цикла, что увеличивает размер переменной description. Но, totalChars имеет размер, который является предварительно сохраненным размером описания. Итак, позже, когда вы примените условие "bStart

В заключение, в вашем описании слишком много символов escape-последовательностей, которые "могут быть" порождают эту проблему. Итак, замените всю строку ранее, а затем добавьте подстроки в ваш javaScript.

Это может решить, а может и не решить вашу проблему, если она есть, но все же. Поэтому, пожалуйста, поправьте меня, если я ошибаюсь.

Спасибо.

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