Kısa Versiyon: Eğer sayfayı yüklemek önce
, ana yönteme aşağıdaki satırı ekleyin:
İşte
çalıştırabileceğiniz bir örnektir
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
Uzun Versiyon:
Benim ilk içgüdüsü JavaScript çalışma değildi, ama kukla e-postaları test edilmiş ve doğru bir şekilde hata var:
Couldn't find your Google Account
Yani bazı JavaScript gibi görünüyordu çalışıyordu, ancak Kullanıcının şifrelerini girmeye devam etmesini sağlayan bölüm. Ben, konsol hataları dinlemek için which I found here aşağıdaki dinleyici ekledi:
com.sun.javafx.webkit.WebConsoleListener.setDefaultListener(
(webView, message, lineNumber, sourceId) ->
System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message)
);
Bu aşağıdaki hata ile sonuçlandı:
Console: [null:0] XMLHttpRequest cannot load https://ssl.gstatic.com/accounts/static/_/js/blahblahblah
Origin https://accounts.google.com is not allowed by Access-Control-Allow-Origin.
Bu Same-Origin Policy adında bir güvenlik özelliğidir. Sayfaların, olası kötü amaçlı üçüncü taraf web sitelerinden komut dosyalarını yükleyebilmesini sağlamak için tasarlanmıştır.
"Aynı Kaynak İlkesi JavaFX" ile sorununuzu çözecek found the following question'u aradım.
düzeltme ve ek günlük, her iki tam uygulama:
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);
}
}