JavaFX WebView 未执行 Ajax

JavaFX WebView not executing Ajax

我正在尝试在项目中使用 Dropbox Api,因此正在实施 OAuth 2.0 流程。我使用 JavaFX WebView 实现了整个流程,但我遇到了以下问题:

  1. 授权流程启动,一个带有 JavaFX WebView 的 window 弹出并导航到保管箱授权页面。
  2. 用户输入他的帐户信息并点击登录按钮
  3. 登录按钮旁边会出现一个小进度指示器,并且一直在旋转。

授权 url 如下:

https://www.dropbox.com/oauth2/authorize?client_id=<your-client-id>&response_type=token&redirect_uri=<redirect-url>

到目前为止我发现了什么:

因此我认为网络视图根本不执行 ajax 调用。

这是 MCVE(你需要 register your own dropbox app 才能工作):

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class JavaFXWebViewAjaxIssue extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {

        String clientId = ""; // Put your client id in
        String redirectURL = ""; // put your redirect url in

        String url = "https://www.dropbox.com/oauth2/authorize?client_id=" + clientId + "&response_type=token&redirect_uri=" + redirectURL;

        WebView webView = new WebView();
        webView.getEngine().load(url);

        final Scene scene = new Scene(webView);
        stage.setScene(scene);
        stage.show();
    }
}

这不是直接的解决方案,但将来可能会对其他人有所帮助。事实证明,JavaFx WebView 在功能方面似乎落后了 (source) and official support has been dropped (source). I therefore switched to JxBrowser.

JxBrowser 默认是付费的,但他们对开源项目提供免费许可。由于许可和其他原因,JxBrowser 不如 WebView 好用,但由于它使用 Chromium,所以它在功能方面是最新的,soes 似乎没有这样的错误。

顺便说一句,我不以任何方式隶属于 TeamDev 或 JxBrowser,我只是在我的项目中使用它:)