JavaFx WebView文档未呈现

时间:2019-09-30 08:38:09

标签: java javafx

我想在JavaFx WebView中显示某个网页,但是它保持空白。

我已经在WebView的WebEngine中添加了一个documentListener。这显示了文档已加载。

我在最高级的级别上挖掘了日志,但是我看不到为什么页面无法呈现。

这是完整的代码:


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登录页面,但它仍然为空白。

有人知道为什么它保持空白吗?

0 个答案:

没有答案