Документ JavaFx WebView не отображается - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу показать определенную веб-страницу в JavaFx WebView, но она остается пустой.

Я добавил documentListener в WebEngine WebView. Это показывает, что документ загружен.

Я копался в журнале на самом лучшем уровне, но я не понимаю, почему страница не отображается.

Вот полный код:


import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class FxBrowserOfficeTest extends Application
{
  @Override
  public void start( Stage stage ) throws Exception
  {
    StackPane pane = new StackPane();
    WebView view = new WebView();

    WebEngine engine = view.getEngine();

    engine.load( "https://login.microsoftonline.com/47ef05e2-eef7-412f-b794-3b99f6ab08e7/saml2" );

    engine.documentProperty().addListener( new ChangeListener<Document>()
    {
      @Override
      public void changed( ObservableValue<? extends Document> observable, Document oldDocument, Document newDocument )
      {
        Document doc = engine.getDocument();
        if ( doc != null )
        {
          try
          {
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
            transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4" );
            DOMSource source = new DOMSource( doc );
            ByteArrayOutputStream streamOut = new ByteArrayOutputStream();
            StreamResult result = new StreamResult( streamOut );
            transformer.transform( source, result );

            System.out.println( streamOut.toString().trim() );
          }
          catch ( Exception e )
          {
            e.printStackTrace();
          }
        }
      }
    } );

//ADDED
    System.err.println( "UserAgent: " + engine.getUserAgent() );
    System.err.println( "JavaScriptEnabled: " + engine.isJavaScriptEnabled() );

    engine.getLoadWorker().stateProperty().addListener( new ChangeListener<Worker.State>()
    {
      @Override
      public void changed( ObservableValue ov, Worker.State oldState, Worker.State newState )
      {
        System.err.println( "LoadWorker newState: " + newState );
      }
    } );
// END ADDED


    pane.getChildren().add( view );

    Scene scene = new Scene( pane, 960, 600 );
    stage.setScene( scene );
    stage.show();
  }

  public static void main( String[] args ) throws IOException
  {
    Application.launch( args );
  }
}

Я ожидалСтраница входа в Microsoft отображается, но она остается пустой.

Кто-нибудь знает, почему он остается пустым?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...