javascript - 如何从使用SWT浏览器从ajax请求获取数据的java脚本函数获取eclipse函数的返回值?

标签 javascript java browser swt

我已经尝试过以下......

我在 eclipse 中有这个:我在 java 中有一个按钮,可以在 javascript 中触发此函数

    Object status =  browserCtrl.evaluate("return atm.java.webToJavaPerspective()");

然后我在javascript中有这个函数

function atm.java.webToJavaPerspective(){
  returnData = {};
  //ajaxRequest = some ajaxRequest variable 
  $.when(ajaxRequest).then(function( data, textStatus, jqXHR ) {
    //modify the data
    returnData.textStatus = textStatus;  

    //this return statement should return data to java function
    return returnData;
  });

//this will return empty object
return returnData;
}

但我总是得到空对象。因为ajax请求需要几秒钟的时间,而我的javascript函数返回空对象,等待请求返回数据。

我怎样才能实现这个目标..?

最佳答案

处理 Ajax 调用时,获得结果后,您必须从 Javascript 代码中调用所谓的 BrowserFuntion

下面是如何定义 BrowserFunction 以及如何从 Javascript 调用它的示例:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    Browser browser = new Browser(shell, SWT.NONE);
    browser.setText("<a href='#' onClick='theJavaFunction()'>Click me!</a>");

    new BrowserFunction(browser, "theJavaFunction")
    {
        @Override
        public Object function(Object[] objects)
        {
            System.out.println("Call from Javascript");

            return null;
        }
    };

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
}

此外,Vogella 提供了有关浏览器的优秀教程:

http://blog.vogella.com/2009/12/21/javascript-swt/

关于javascript - 如何从使用SWT浏览器从ajax请求获取数据的java脚本函数获取eclipse函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44218165/

相关文章:

javascript - Node js mysql访问javascript对象

javascript - Firefox 扩展 - onPopupClose 事件?

JavaScript 在 .then 中使用 .then 的 promise 不起作用

java - 使用 GLEventListener.display() 绘制顶点时出现 NullPointerException

javascript - 迷你 JavaScript 浏览器

javascript - 如何使所有 <a> 具有相同的目标 ="_self"

java - 访问 Java 库的 HTML5 移动应用程序?

java - 范围报告在 Cucumber 4.7.1 中不起作用

android - (Delphi 10.2) 如何从我的应用程序打开 Android 网络浏览器中的 URL?

javascript - AJAX 长轮询不从浏览器发送