android webview javascript不使用loadDataWithBaseUrl

android webview javascript不使用loadDataWithBaseUrl,javascript,android,android-webview,Javascript,Android,Android Webview,我正在尝试使用 webview.loadDataWithBaseURL("", htmlcontent, "text/html", null, ""); 方法从填充html数据的StringBuilder返回htmlContent 我已启用javascript并设置webChromeClient,如下所示 webview.getSettings().setJavaScriptEnabled(true); webview.setWebChromeClient(new WebChromeClien

我正在尝试使用

webview.loadDataWithBaseURL("", htmlcontent, "text/html", null, "");
方法从填充html数据的
StringBuilder
返回htmlContent

我已启用javascript并设置webChromeClient,如下所示

webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.addJavascriptInterface(new JSClass(), "Android");
我的javascript界面:

class JSClass {
    public void getHTMLContent(String html)
    {
        Log.i(Global.TAG, "HTMLContentReceived: "+html);
    }
}
和我的html页面中的javascript:

<script type="text/javascript">
    var ele = document.getElementsByClassName('test');
    for(var i=0;i<ele.length;i++){
        ele[i].onclick = function(){
            window.Android.getHTMLContent(this.innerHTML);
        }
    }
</script>

var ele=document.getElementsByClassName('test');

对于(var i=0;i您没有任何baseURL可供使用,因为您正在加载动态生成的HTML。 因此
webview.loadData(htmlcontent,“text/html”,null);
应该足够了

Java脚本不会在Java代码中引发任何异常。请记住,JS并不像Java代码那样类型安全/严格……我的做法是在敏感的Javascript调用之间放置日志,以查看该行是否通过并检查值。由于您没有提供HTML,我会设置WebHomeClient并覆盖:

然后从JavaScript调用例如:
console.log('检查我的值:'+(ele!=null))
。有关此的详细信息


看着你的JavaScript代码,我不明白什么是
this.innerHTML

纠正的!!只需使用webview.loadUrl(“j”)在你的活动中添加JavaScriptavascript://your javascript位于webview.getSettings()之后(此处为“);setJavaScriptEnabled(true);在上面的代码中,它工作得很顺利!!希望它能帮助谢谢你的反馈。我已经解决了这个问题,现在我的webview会响应用户的点击。我面临的问题是,我用一个包含表n的页面加载我的webview。当用户点击任何一行时,我调用一个intent,它会根据t中的某些单元格数据加载一些图像帽行。它在第一次单击时运行平稳,但应用程序在第二次单击时关闭,不会出现任何错误。我不理解y。是不是因为图像占用内存(每个图像大约2MB,只有拇指,当用户单击一行时大约200kb)?我如何解决dis?作为第一条注释:每个堆栈溢出(SO)问题应该足够具体。一旦你问了一些问题,如果你收到的回答是正确的,你就继续。对于你当前的问题,我会打开另一个线程。但是,自从你开始了它:一个200kb的图像将在内存中占用大约三倍的时间,考虑到它将被解压缩。我相信你应该重新考虑你的策略egy看看你的应用程序在做什么。如果你能在一个新的SO问题中陈述你的实际问题,也许你能得到更多的帮助。没问题,当前的问题仍然存在吗?是的,它存在。我下载了一些图像拇指(分辨率ht*wd:225*300)当用户在webview中单击某一行时,从服务器查看拇指并返回webview,当用户第二次单击任何一行时,应用程序将毫无错误地关闭。当应用程序关闭时,日志中应该会显示一些内容。您可以发布吗?
webview.setWebChromeClient(new MyChromeClient());

private class MyChromeClient extends WebChromeClient {
        @Override
        public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
            String message = consoleMessage.message() + " -- line " + consoleMessage.lineNumber();
            switch (consoleMessage.messageLevel()) {
            case ERROR:
                logErrorMessage(message);
                break;
            default:
                logInfoMessage(message);
                break;
            }
            return true;
        }

        private void logInfoMessage(String message) {
            Log.i("JSTag", message);
        }

        private void logErrorMessage(String message) {
            Log.e("JSTag", message);
        }


    }