2014-01-28 2 views
0

안드로이드 웹보기에서 일부 필드를 채우려고합니다. 하지만 항상이 오류가 있습니다. 01-28 05:06:22.980: E/Web Console(2827): Uncaught TypeError: Cannot set property 'value' of null at null:1자바와 자바 스크립트로 안드로이드에서 웹보기 필드 채우기

나는 몇 가지 해결책을 찾았지만 찾지 못했습니다. 이 문제를 어떻게 해결할 수 있습니까? 다음은 내 코드입니다

public void onStart() { 
     super.onStart(); 

     webView = (WebView) findViewById(R.id.webView1); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebChromeClient(new WebChromeClient()); 

     String url = "file:///android_asset/index.html"; 
     webView.loadUrl(url); 

     webView.setWebViewClient(new WebViewClient(){ 

       public void onPageFinished(WebView view, String url) { 
        webView.loadUrl("javascript: {" 
          + "document.getElementById('AddSerialNum').value = '" 
          + ABC 
          + "';" 
          + "document.getElementById('ctl00_PageContent_lblName').value = '" 
          + ABC + "';};"); 

       } 
      }); 
    } 

이 내 index.html 파일

<!DOCTYPE html> 
<html> 

<body> 

<div style="BORDER-BOTTOM: #dfdfdf 3px solid; PADDING-BOTTOM: 1px; MARGIN-BOTTOM: 10px; HEIGHT: 25px;"> 
       ......   
       <div style="padding: 10px;"> 
        <table width="100%"> 
         <tbody><tr> 
          <td> 
           <div style="float: left;"> 
            <div> 

            <form>Serial Number: <input type="text" name="AddSerialNum"></form><br><br> 

             <span id="ctl00_PageContent_lblName" style="font-weight:bold;"></span> 
            </div>...... 

필드를 작성하고 자바 나중에 데이터를 얻을 수있는 방법이 있습니까입니까?

미리 감사드립니다.

답변

3

getElementById을 사용하면 id에 의해 DOM 요소를 얻을 수 있습니다. id AddSerialNum이 존재하지 않습니다. 이것이 오류의 의미입니다. 당신은 name="AddSerialNum"와 함께 input을 가지고 있습니다. 나는 당신이 얻고 싶다고 생각합니다. 어느 쪽이에 id을 추가하거나 편집getElementsByName("AddSerialNum")[0]

사용 : 이미 지적처럼 , 당신이 사용할 수 있습니다

webView.loadUrl("javascript: {document.getElementsByName(\"AddSerialNum\")[0].value ='" + ABC + "';};"); 

getElementsByName 요소의 배열을 반환, 당신은 얻을 수 있습니다 첫 번째 코드는 [0]

+2

나는이'webView.loadUrl을 시도 아직 작동하지 않는 – yakhtarali

+2

입니다. 대단히 감사합니다. – yakhtarali

+0

안녕하세요. 모든 예제를 참조하십시오. 나는 전에 이런 종류의 코드로 작업하지 않았다. –

1

샘플로 추가하면됩니다. (' ""{AddSerialNum \ ") 값 =."+ ABC +'document.getElementsByName (\;}; "자바 스크립트");` 하지만 내 필드

mWebView.setWebViewClient(new WebViewClient() { 
      private void setUserEmail(WebView view) { 
       String js = "javascript: {document.getElementsByName(\"recover-email\")[0].value ='" + mEmail + "';};"; 
       if (Build.VERSION.SDK_INT >= 19) { 
        view.evaluateJavascript(js, s -> { 
        }); 
       } else { 
        view.loadUrl(js); 
       } 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 
       mLoadingProgressBar.setVisibility(View.GONE); 
       setUserEmail(view); 
      } 
    } 
관련 문제