【问题标题】:'Uncaught SyntaxError: missing ) after argument list' error occurs when i execute webview loadUrl ()'Uncaught SyntaxError: missing ) after argument list' 错误发生在我执行 webview loadUrl ()
【发布时间】:2018-11-13 22:40:09
【问题描述】:
private String getMeaningJavascript = "javascript:JavaScriptInterface.getMeaning (function test() {return 'hi';} test();)";
...
this.loadUrl(getMeaningJavascript);
...
public class JavaScriptInterface {

    @JavascriptInterface
    public void getWord(String text){
        wordAndMeaning += text;
        Log.w("test",text);
    }

    @JavascriptInterface
    public void getMeaning(String text) {
        Log.w("test",text);
    }

}

这是我要执行的 javascript 代码。

而我界面的 getMeaning 函数只是打印 hi。

我认为我的 javascript 代码没有问题。

但我不知道为什么会出现这个错误。

【问题讨论】:

  • 这是无效的 javascript: javascript:JavaScriptInterface.getMeaning (function test() {return 'hi';} test();) 如果它应该是一个字符串,那么你缺少引号
  • @GetOffMyLawn 从技术上讲它是有效的,因为它是一个 URL。

标签: javascript java android webview


【解决方案1】:

我感觉你的字符串周围缺少引号。您的方法 getMeaning 接受一个字符串,但是您没有将字符串传递给它。通过将传递的值用引号括起来到getMeaning,错误应该会消失。

注意:我的 Java 没有达到标准,但应该是这样的:

private String getMeaningJavascript = 
  "javascript:JavaScriptInterface.getMeaning (\"function test() {return 'hi';} test();\")";

【讨论】:

  • 谢谢,但我想将“hi”传递给 getMeaning 函数。但你的答案打印 ''function test() {return 'hi';} test();".
  • 打印是因为你告诉它:Log.w("test",text);
  • 我没有详细解释。我想运行 JavaScript 函数并将返回的文本作为 getMeaning 函数的参数。例如,这是另一个将 querySelector 值传递给 getword 函数的代码。 this.loadUrl("javascript:JavaScriptInterface.getWord(document.querySelector(\"html body#bodyClass div#content div.entry_search_word.top div.h_word._tipSkipItem strong.target\").innerHTML)");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多