i got a few problem..

Having problems with building or using the JCEF Java binding? Ask your questions here.

i got a few problem..

Postby david505 » Fri Jan 16, 2015 1:45 pm

i want to extract html source.

so, i found some related post.

http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=11909&p=21920&hilit=getsource#p21920

i try to revise example code and add some my code.

revised EXAMPLE CODE : MainFrame.java
Code: Select all

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JTextField;

import org.cef.CefApp;
import org.cef.CefClient;
import org.cef.OS;
import org.cef.browser.CefBrowser;


public class MainFrame extends JFrame {
  private static final long serialVersionUID = -5570653778104813836L;
  private final JTextField address_;
  private final CefApp     cefApp_;
  private final CefClient  client_;
  private final CefBrowser browser_;
  private final Component  browerUI_;
  private static HtmlParser parser = new HtmlParser();
 

  private MainFrame(String startURL, boolean useOSR, boolean isTransparent) {

    cefApp_ = CefApp.getInstance();


    client_ = cefApp_.createClient();
   

    browser_ = client_.createBrowser(startURL, false, isTransparent);
   
    browser_.getSource(parser); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< add
   
    browerUI_ = browser_.getUIComponent();
   
    address_ = new JTextField(startURL, 100);
    address_.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        
        browser_.loadURL(address_.getText());
        }
    });


    getContentPane().add(address_, BorderLayout.NORTH);
    getContentPane().add(browerUI_, BorderLayout.CENTER);
    pack();
    setSize(800,600);
    setVisible(true);
   

    addWindowListener(new WindowAdapter() {
      @Override
      public void windowClosing(WindowEvent e) {
        dispose();
       
        cefApp_.dispose();
      }
    });
  }

  public static void main(String[] args) {

    new MainFrame("http://www.google.com", OS.isLinux(), false);
   
   
  }
}


add some my code

Code: Select all
public class HtmlParser implements CefStringVisitor{

   @Override
   public void visit(String arg0) {

      System.out.println(arg0); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< i want to see html code by console window.
      
   }

}


but, i can't see anything.

please help me
david505
Newbie
 
Posts: 9
Joined: Fri Jan 16, 2015 1:28 pm

Re: i got a few problem..

Postby kaiklimke » Mon Jan 19, 2015 7:51 am

Hi david505,

you're calling browser_.getSource(parser) too early in your code.
At this point in code, you've initialized the browser (by calling createBrowser) but there wasn't enough time to load any kind of HTTP content.
Therefore you have to wait until the browser has loaded its content.

It depends on what you want to do, but one idea is to add the "getSource(parser)" method call into an implementation of CefLoadHandler:
Code: Select all
    client_.addLoadHandler(new CefLoadHandlerAdapter() {
      @Override
      public void onLoadingStateChange(CefBrowser browser, boolean isLoading, boolean canGoBack, boolean canGoForward) {
        if (!isLoading)  {
          browser.getSource(parser); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< just call it after the browser has finished loading its content.
        }
      }


Another (more complex example) can be found in the implementation of MainFrame (detailed):
  • In tests.detailed.ui.MenuBar the menu entry "Get source..." is registered". If it is called, a new instance of ShowTextDialog is called and passed to browser_.getSource().
  • The class tests.detailed.dialog.ShowTextDialog implements the interface CefStringVisitor and displays the text content within a JTextArea.

Regards,
Kai
kaiklimke
Techie
 
Posts: 19
Joined: Tue Oct 29, 2013 3:49 am

Re: i got a few problem..

Postby david505 » Tue Jan 20, 2015 3:26 pm

I feel a fool of myself... (ㅠㅡㅠ)

I understand your advice. and i try this

it was working. wow~!

I appreciate for your help.

Thanks a lot. :)
david505
Newbie
 
Posts: 9
Joined: Fri Jan 16, 2015 1:28 pm


Return to JCEF Forum

Who is online

Users browsing this forum: No registered users and 23 guests