我使用SWT Browser对象加载这样的网页:
Browser browser = new Browser(parent, SWT.BORDER);
browser.setUrl("http://localhost:18080/app/test-servlet");
我有一个函数来调用evaluate方法。 (通过单击控件上的SWT按钮触发该功能。)
public void evaluate() {
Object content = browser.evaluate("getClientContent();");
System.out.println("content: " + content);
}
在网页上,javascript函数getClientContent()是:
<script type="text/javascript">
function getClientContent() {
alert("test");
return "test";
}
</script>
当我点击SWT应用程序上的测试按钮时,我可以看到显示“test”的警告框。但evaluate()始终返回null。代码有什么问题?感谢
答案 0 :(得分:3)
您需要在JavaScript中“返回”结果,如下所示:
Object content = browser.evaluate("return getClientContent();");
答案 1 :(得分:0)
返回值仅限于以下几种类型:
返回执行指定脚本的结果(如果有)。
在上下文中评估包含javascript命令的脚本 目前的文件。如果是文档定义的函数或属性 通过脚本访问,然后不应该调用此方法 文档已完成加载(ProgressListener.completed()给出 通知此)。
如果脚本返回支持类型的值,则返回java 返回值的表示。支持的javascript - &gt; java映射是:
* javascript null或undefined - &gt; null
* javascript&gt;号码 - &gt; java.lang.Double
* javascript string - &gt; java.lang.String中
* javascript boolean - &gt; java.lang.Boolean
* javascript数组,其元素都是受支持的类型 - &gt; java.lang.Object中[]
试试例子
Object result = browser.evaluate("return 1;");
如果不支持返回类型...似乎返回null。
试试例子
Object window = browser.evaluate("return window;");
&#34;评估&#34;的文档状态
如果返回值的类型不受支持,则抛出SWTException,或者 如果评估脚本会导致抛出javascript错误。
我发现误导,因为我不希望上面的行抛出异常,因为无法返回窗口对象。