【问题标题】:returned string from evaluateJavascript getElementById being returned with slashes and quotes从evaluateJavascript getElementById返回的字符串返回斜线和引号
【发布时间】:2019-05-24 23:20:17
【问题描述】:

我遇到了来自 evaluateJavascriptgetElementById 的返回字符串的问题,其中返回的字符串使用斜杠和引号进行格式化。

例如,我的 webview 中有一个元素,Iduser_id_firebase 就像这样

<div style="display: none" id="user_id_firebase">active|12345</div>

所以在我的getElementById 中,我正在检索innerHTML,应该返回并加载到我的firebase 的是active|12345

我得到的是这个

"\"active|20321\"

最终我将字符串与| 分开并分离这些值,但最初的html 字符串返回格式很奇怪,带有斜线和引号。

谁能解释为什么会这样?

webView.evaluateJavascript(
        "(function() { return (document.getElementById('user_id_firebase').innerHTML); })();",
        new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String html) {
                String currentString = html;
                String[] separated = currentString.split("|");
                // Write a message to the database
                FirebaseDatabase database = FirebaseDatabase.getInstance();
                DatabaseReference myRef = database.getReference("message");

                myRef.setValue(html);
            }
        });

【问题讨论】:

    标签: java android html android-studio webview


    【解决方案1】:

    我以前也有同样的问题。当我们调用evaluateJavascript 时,它会将脚本的结果作为JS 对象返回,字符串数据由双引号包裹的字符串携带。但是,斜杠字符用于转义双引号,您可以使用以下 sn-p 过滤结果:

    html = html.replaceAll("[\"]+", "");
    

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 2018-02-25
      • 2011-10-04
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      相关资源
      最近更新 更多