gpt4 book ai didi

java - 将 Java 变量传递给嵌入另一个 Java 方法中的 JavaScript 方法

转载 作者:行者123 更新时间:2023-12-03 12:35:29 25 4
gpt4 key购买 nike

我有以下 Java 代码:

    public void nextElement()
{
try
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
System.out.println("Executing...");
JavascriptExecutor js = (JavascriptExecutor) driver;
String input_tag = "input";
js.executeScript(createHTML(input_tag));
System.out.println("Completed execution..");
}
catch(Exception exp)
{
exp.printStackTrace();
}
}

我现在需要 createHTML() 方法来接受变量 input_tag 的值,并将其传递给嵌入 createHTML() 中的 JavaScript 方法 Java 方法。

createHTML() 方法看起来有点像这样:

    public String createHTML(String tag) //"tag" accepts value from "input_tag"
{
String temp = "";
temp += "function test(javascript_tagname)"; //"javascript_tagname" should be the value passed in the Java variable "tag"
temp += "{ ";
temp += " var x = document.getElementsByTagName('javascript_tagname');";
temp += " var i = 0;";
temp += " for (var i=0; i<x.length; i++)";
temp += " {";
temp += " x[i].onclick = function()";
temp += " {";
temp += " var previousStyle = this.style.getAttribute('cssText');";
-----------------
-----------------
}

那么我需要做什么来指定函数 test() 中的参数 javascript_tagname 实际上应该从传递的 Java 参数“tag”中提取值?

我知道这一定有点令人困惑。如需任何说明,请告知我。

任何帮助表示赞赏! :) :)

最佳答案

如果您想将变量的值绑定(bind)(硬编码)到脚本源,其他两个答案是可行的方法。您仍然需要调用该函数。

如果您想调用函数并传递参数,请不要对脚本中的参数进行硬编码,而只需使用 invokeFunction 方法将脚本函数的名称和脚本中定义的函数的参数列表作为参数传递:

        engine.eval(createHTML());
Invocable invocableEngine = (Invocable) engine;
invocableEngine.invokeFunction("test", "javascript_tagname" );

不确定你想做什么,但有一个简短的工作示例:

public void nextElement()
{
try
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
System.out.println("Executing...");
String input_tag = "input";
engine.eval(createHTML(""));
Invocable invocableEngine = (Invocable) engine;
invocableEngine.invokeFunction("test", "javascript_tagname_param" );
}
catch(Exception exp)
{
exp.printStackTrace();
}
}

public String createHTML(String tag) //"tag" is not used
{
String temp = "";
temp += "function test(javascript_tagname)"; //"javascript_tagname" should be the value passed in the Java variable "tag"
temp += "{ ";
temp += " println(javascript_tagname);";
temp += "};";
return temp;

}

输出:

Executing...
javascript_tagname_param

关于java - 将 Java 变量传递给嵌入另一个 Java 方法中的 JavaScript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com