2013-05-28 62 views
0

我正在與webview一起開發Android項目。一切正常,但我不能將文本設置爲textarea。我有一堆有備忘錄選項的頁面。我加載了備忘錄的代碼到網頁使用jQuery:WebView無法將文本設置爲textarea

$('#memoContainer').load("memo.html"); 

memo.html textarea的:

<div class="sisalto"> 
<textarea id="memo" style="width: 100%"> </textarea> 
</div> 

textarea的作品,我可以寫,我可以得到的內容,它使用jQuery保存在安卓

function save(){ 
var newContent = $('#memo').val(); 
AndroidFunction.saveFile(newContent); 
} 

我試圖讓保存的內容,並將其設置在textarea的:

var setMemo = $('#memo'); 
setMemo.innerText("DOESNT WORK"); 
setMemo.val('NOPE'); 

我已經嘗試了谷歌搜索和瀏覽這裏幾個小時,但似乎無法找到任何有用的東西。許多人建議.val('smth');選項,但它不起作用。

備忘錄在嘗試設置內容之前已經加載,在我看來一切正常。這裏有什麼問題以及關於如何完成這個任務的想法?

回答

0

你應該用一個 '完整的' 回調函數

$('#memoContainer').load('memo.html', function() { 
    var setMemo = $('#memo'); 
    setMemo.val('hello'); 
}); 

你啓用JavaScript用的WebView?你需要這個來啓用javascript:

WebView webView = ... 
webView.getSettings().setJavaScriptEnabled(true); 

確保jQuery被正確加載,你能發佈你的代碼嗎?

這裏的工作示例(需要Internet權限,因爲它使用CDN加載的jQuery):

import android.os.Bundle; 
import android.app.Activity; 
import android.webkit.WebView; 

public class MainActivity extends Activity { 

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

     String html = "<html>\n" + 
       "<body>\n" + 
       "<textarea id=\"area\"></textarea>\n" + 
       "\n" + 
       "<script src=\"http://code.jquery.com/jquery-1.10.0.min.js\"></script>\n" + 
       "<script src=\"http://code.jquery.com/jquery-migrate-1.2.1.min.js\"></script>\n" + 
       "\n" + 
       "<script type=\"text/javascript\">\n" + 
       "  $(document).ready(function() {\n" + 
       "    var area = $('#area');\n" + 
       "    area.val('Hello');\n" + 
       "  });\n" + 
       "</script>\n" + 
       "\n" + 
       "</body>\n" + 
       "</html>"; 
     String mime = "text/html"; 
     String encoding = "utf-8"; 

     setContentView(R.layout.activity_main); 
     WebView web = (WebView) this.findViewById(R.id.web); 
     web.getSettings().setJavaScriptEnabled(true); 
     web.loadDataWithBaseURL(null, html, mime, encoding, null); 
    }  
} 
+0

是的,啓用JavaScript並從本地文件正確加載jQuery。就像我說的,除了將文本設置到textarea之外,一切都可以工作。 – muhonne

0

好了,問題是負載的功能。它加載memo.html並在頁面上顯示它,但實際的代碼不會被注入頁面。因此,我不能將文本設置爲textarea,因爲它實際上並不存在。