首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从java代码中调用javascript函数

如何从java代码中调用javascript函数
EN

Stack Overflow用户
提问于 2012-07-31 19:42:36
回答 3查看 16.3K关注 0票数 0

我试图从一个java类调用一个javascript函数,但我得到了以下错误:

代码语言:javascript
复制
-Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines

-Could not find method sun.misc.Service.providers, referenced from method javax.script.ScriptEngineManager.initEngines

-Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines

-java.lang.VerifyError: javax.script.ScriptEngineManager

代码如下:

代码语言:javascript
复制
    public  void sendResult(){
    ScriptEngineManager manager = new ScriptEngineManager();
                    ScriptEngine engine = manager.getEngineByName("js");

                    String script = "function send() {"+"var id_result = window.MyPGP.getResult();"+                            
                            "document.getElementById('id_result').value = id_result;"+"console.log(\"change the box value\");";

                    try {
                        engine.eval(script);

                        Invocable invocableEngine = (Invocable) engine;

                        invocableEngine.invokeFunction("send");


   } catch (ScriptException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                }  catch (Exception e) {
                    e.printStackTrace();
                }

我想要做的是,当支付完成后,这个函数在这个类的其他方法中被调用,以获得支付的结果,并将其打印在主html中的一个框中。

EN

回答 3

Stack Overflow用户

发布于 2017-02-16 11:14:10

使用此代码

代码语言:javascript
复制
import javax.script.*;

public class InvokeScriptFunction {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        // JavaScript code in a String
        String script = "function hello(name) { print('Hello, ' + name); }";
        // evaluate script
        engine.eval(script);

        // javax.script.Invocable is an optional interface.
        // Check whether your script engine implements or not!
        // Note that the JavaScript engine implements Invocable interface.
        Invocable inv = (Invocable) engine;

        // invoke the global function named "hello"
        inv.invokeFunction("hello", "Scripting!!" );
    }
}

祝好运

票数 1
EN

Stack Overflow用户

发布于 2012-07-31 19:56:34

代码语言:javascript
复制
 ScriptEngine engine = manager.getEngineByName("JavaScript");

这行得通吗?

票数 0
EN

Stack Overflow用户

发布于 2012-08-01 14:28:36

你可以这样做

代码语言:javascript
复制
super.loadUrl("file:///android_asset/www/index.html", 20000);
super.loadUrl("javascript: { var pageFlag = '" + flag + "';}"); // Your Javascript function here
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11739328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档