HTML TextArea字符限制在Android WebView中

时间:2011-02-15 10:22:19

标签: java javascript android html webview

我写了一个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,以便在该textarea中编写内容,如下面的代码所示。

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

即使上面的代码有效,我也多次调用它,所以我可以在这个textarea元素中插入7000多个字符。

负责执行Javascript以将文本(HTML)插入textarea的Java代码如下所示。

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 字符插入网页的textarea。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

我尝试仅使用HTML + JavaScript来解决您的问题。请参阅this fiddle

如您所见,这是正常的。所以,我认为问题可能在于替换转义序列字符。看到您正在循环中更改转义序列字符,这将增加描述变量的大小。但是,totalChars的大小是先前存储的描述大小。因此,稍后当你应用“bStart&lt; = totalChars”条件时,它将计数到只有totalChars(即已经小于当前大小)。

总结,你的描述有太多的转义序列字符“可能”会产生这个问题。所以,先替换整个字符串&amp;然后将子串添加到javaScript中。

如果还有其他问题,这可能会也可能不会解决您的问题。所以,如果我错了,请纠正我。

谢谢。