Я написал 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 символов.
Что-то мне не хватает?