2013-05-28 2 views
0

webview 인 Android 프로젝트에서 작업하고 있습니다. 모든 것은 정상적으로 작동하지만 텍스트를 텍스트 영역으로 설정할 수는 없습니다. 메모 작성 옵션이있는 페이지가 많습니다.WebView에서 텍스트 영역을 텍스트로 설정할 수 없습니다.

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

memo.html 텍스트 영역이 : 내가 jQuery를 함께 페이지에 메모에 대한 코드를로드하고있어

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

텍스트 영역의 작품을 내가 쓸 수 있고 내가 내용을 얻을 수 있으며, jQuery를 함께 안드로이드에 저장 :

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

을 나는 저장된 내용을 얻을 텍스트 영역에서 설정하기 위해 노력하고있어 :

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

나는 몇 시간 동안 인터넷 검색을 시도했지만 여기서는 아무 것도 유용하지 않은 것 같습니다. 많은 사람들이 .val('smth'); 옵션을 제안하지만 작동하지 않습니다.

내용을 설정하려고하기 전에 메모가로드되며 모든 것이 정상입니다. 여기에있는 문제는 무엇이며 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까?

답변

0

당신은

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

당신이 웹보기와 자바 스크립트를 사용 가능하게 '전체'기능 콜백을 사용해야합니까? 자바 스크립트를 활성화하려면 다음이 필요합니다.

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

jQuery가 올바르게로드되었는지 확인하고 코드를 게시 할 수 있습니까? 여기

작업 예제 (이 jQuery를로드 할 CDN을 사용하기 때문에 인터넷 권한이 필요) :

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가 로컬 파일에서 제대로로드되었습니다. 내가 말했듯이, 텍스트 영역에 텍스트를 설정하는 것을 제외하고는 모든 것이 작동합니다. – muhonne

0

좋아, 문제는로드 기능이었다. memo.html을로드하여 페이지에 표시하지만 실제 코드는 페이지에 삽입되지 않습니다. 따라서 텍스트가 실제로 존재하지 않기 때문에 텍스트를 텍스트 영역으로 설정할 수 없습니다.

관련 문제