精简版:
在加载页面之前,将以下行添加到您的main方法中:
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");长版:
我的第一个直觉是Javascript无法正常工作,但是我测试了伪邮件并正确地得到了错误:
找不到您的Google帐户
因此,似乎有些Javascript在起作用,但无法使用户继续输入密码的部分起作用。我添加了以下侦听器来侦听控制台错误,该错误在这里找到:
com.sun.javafx.webkit.WebConsoleListener.setDefaultListener( (webView, message, lineNumber, sourceId) -> System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message));这导致以下错误:
控制台:[null:0] XMLHttpRequest无法加载
https://ssl.gstatic.com/accounts/static/_/js/blahblahblah
Access-Control-Allow-Origin不允许使用
来源https://accounts.google.com。
这是一个称为“ 同源策略”的安全功能。它旨在阻止网页能够从潜在的恶意第三方网站加载脚本。
我搜索了“ Same Origin PolicyJavaFX”,发现以下问题可以解决您的问题。
具有修复程序和附加日志记录的完整应用程序为:
public class CalendarController extends Application{ @Override public void start(Stage primaryStage) throws Exception { WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); com.sun.javafx.webkit.WebConsoleListener.setDefaultListener( (webView, message, lineNumber, sourceId)-> System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message) ); webEngine.load("http://calendar.google.com"); StackPane root = new StackPane(); root.getChildren().add(browser); primaryStage.setScene(new Scene(root, 600, 600)); primaryStage.show(); } public static void main(String[] args) { System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); launch(args); }}


