2013-03-21 111 views
0

我觀察到,當我試圖挖掘並專注於只讀且空的TEXTAREA時,Android Webview卡住了。鍵盤出現了,當然不會向TEXTAREA輸入任何東西,但在此之後WebView卡住了。WebView卡在Samsung Galaxy S3上的只讀空TEXTAREA(Android 4.1.1)

我只能使用「返回」鍵強制關閉鍵盤,但不執行其他操作。除非重新啓動整個應用程序,否則無法執行任何操作

<textarea rows="3" id="abcd" readonly="readonly" name="abcd"></textarea> 

我不斷在LOGCAT控制檯中針對webview獲取此詳細消息。

singleCursorHandlerTouchEVent ~getEditableSupport FASLE 

這種情況僅運行Android 4.1.1三星S3設備上完美的作品在三星Nexus S(的Android 4.1.2)和4.1.2 Android模擬器。

其他的解決方案在這些環節提出沒有工作

這個問題可以很容易地與這個獨立網頁視圖例如

public class TestWebViewTextStylesActivity extends Activity { 

    WebView mWebView = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     String data = "<html><body>" + 
     "<textarea rows='3' id='abcd' readonly='readonly' name='abcd'></textarea>" + 
     "</body></html>"; 

     mWebView = new WebView(this); 
     setContentView(mWebView); 

     // Set some HTML 
     mWebView.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8", null); 

    } 
} 

回答

0

我發現轉載之後的解決方案花費半天的時間尋找各種選擇。

解決方案非常簡單,它是在TEXTAREA html標籤之間引入一個空格。

<textarea rows="3" id="abcd" readonly="readonly" name="abcd"> </textarea> 
_____________________________________________________________||___________ 
________________________________________________INSERTED___SPACE ___HERE__ 

而且我還發現,設置.innerText屬性通過JS空字符串也使文本區域造成網頁視圖凍結。

如果沒有這個空間,瀏覽器假定TEXTAREA中的所有HTML後面還包含TEXTAREA所需的空間。所以正確的方法是給一個空格,然後完成TEXTAREA(</TEXTAREA>

對於可寫的TEXTAREA HTML元素,您不能擁有這個空白空間,或者它的前綴是用戶輸入的值。所以我必須編寫一個JS方法,它將在將其設置到WebView之前將必須注入的值清空。

function clearOffTextArea(textAreaId) { 

    var x = document.getElementById(textAreaId); 

    var isReadOnly = false; 

    if (x.hasAttribute('readOnly')) { 
     isReadOnly = x.readOnly; 
    } 

    if (isReadOnly == false) { 
     if (customMethodToTrimString(x.innerText) == '') { 
      x.innerText = ''; 
     } 
    } 
} 
相關問題