2016-01-12 3 views
3

Я пытаюсь ввести JavaScript для чтения по определенному значению при загрузке webView."Uncaught TypeError: window.HTMLOUT.showHTML не является функцией"

Это свойства, которые я использовал для своих webView.

webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setCacheMode(2); 
    webView.getSettings().setDomStorageEnabled(true); 
    webView.clearHistory(); 
    webView.clearCache(true); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setSupportZoom(true); 
    webView.getSettings().setUseWideViewPort(false); 
    webView.getSettings().setLoadWithOverviewMode(false); 
    webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 

и я инъекционный Javacript в моем onPageFInished() методе.

 @Override 
     public void onPageFinished(final WebView view, final String url) { 
      webView.post(new Runnable() { 
       @Override 
       public void run() { 
        webView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('input')[0].value+'</head>');"); 
       } 
      }); 
      super.onPageFinished(view, url); 
     } 

Ниже код MyJavaScriptInterface.

public class MyJavaScriptInterface{ 

    @JavascriptInterface 
    public void showHTML(String html_data) { 
     if(html_data.contains("response_code")){ 
      Log.e(TAG, " ======> HTML Data : "+ html_data); 
      new MakeQueryPayment().execute(); 
     }   
    } 
} 

Ошибка, которую я захватил с помощью Logcat.

01-08 17:56:43.701 I/chromium(27026): [INFO:CONSOLE(1)] "Uncaught TypeError: window.HTMLOUT.showHTML is not a function", source: (1) 

я м сталкиваются с этой проблемой только в Samsung Galaxy Tab, номер модели SM-T550, Android версии 5.0.2 . В других устройствах, которые у нас есть, он работает нормально. Может ли кто-нибудь помочь мне в этом. Спасибо заранее.

+2

Изменение minifyEnabled ложь в build.gradle. –

+0

благодарит крошечный солнечный свет, ваш ответ исправить мою проблему, однако должен быть другой путь, поскольку minifyEnabled очень важен. – solid

+0

Убедитесь, что для параметра minifyEnabled установлено значение true для вашего приложения. reffer this http://stackoverflow.com/a/35093618/2615223 –

ответ

1

Я стараюсь использовать Galaxy Tab 4, этот код хорошо работает на этом устройстве.

WebView properties

WebView webView = new WebView(this); 
setContentView(webView); 
webView.clearHistory(); 
webView.clearCache(true); 
webView.getSettings().setBuiltInZoomControls(true); 
webView.getSettings().setCacheMode(2); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setSupportZoom(true); 
webView.getSettings().setUseWideViewPort(false); 
webView.getSettings().setLoadWithOverviewMode(false); 
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 
webView.loadUrl("http://stackoverflow.com/questions/34746626/uncaught-typeerror-window-htmlout-showhtml-is-not-a-function"); 

webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return true; 
    }    

    @Override 
    public void onPageStarted(WebView view, String url, 
        Bitmap favicon) { 
    } 

    public void onPageFinished(WebView view, String url) { 
     view.loadUrl("javascript:window.HTMLOUT.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
    } 
}); 

JavaScript Interface

public class MyJavaScriptInterface{ 

    @JavascriptInterface 
    public void showHTML(String html_data) { 
     Log.e("", " ======> HTML Data : "+ html_data); 
    } 
} 
+0

У меня тоже хорошо работает на других вкладках samsung. –

+0

@nurisezgin Я попытался отправить значение html_data в UI, но я получил пустые данные в textarea, используя mWebView.loadUrl ("javascript: MyFunction ('" + html_data + "');"); тост показывает значение, но я не могу передать его javascript! не могли бы вы помочь мне исправить? Спасибо – user1788736

+0

Привет! В чем проблема, вы пытаетесь вызвать javascript-метод из java? – nurisezgin

Смежные вопросы