Pessoal, estou desenvolvendo um browser feito em java para estudos e estava precisando que ele interpretasse javascript e css de paginas html…alguem conhece alguma referencia sobre esse assunto?
talvez isso pode te dar uma ajuda…
são boas fontes de implementações da específicação do javascript.
Valew raimundo…principalmente pelo rhino
O v8 pelo que eu entendi é para aplicações em c/c++ por isso tambem valew
Vou dar uma olhada nos dois
Ok!!
Esse browser é um projeto de faculdade?
Diante de tantos que aparecem, seria interessante uma browser brasilerio :D.
Visitei o site, mas não vi o idealizador do browser Lobo.
Ideia nasceu aqui no Brasil?
Vc faz parte desse projeto?
O Java 6 já possuí suporte a Scripting
Dá uma olhada no artigo abaixo
http://www.javalobby.org/java/forums/t87870.html
Eu to fazendo o browse so para estudos mesmo…to pegando o que vejo na faculdade e pesquisando um pouco por fora
Eu tinha feito uma pesquisa e encontrei sobre o projeto lobo e sobre o jrex que tambem é feito em java
http://jrex.mozdev.org/source.html
Dei uma olhada no link que o furutani passou…nao sei se alguem mais olhou …nos exemplos o java compilaria o javascript informado como string
Map<String, CompiledScript> m = new HashMap<String, CompiledScript>();
// ...
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
CompiledScript script = m.get("fib");
if(script == null) {
Compilable compilingEngine = (Compilable)engine;
script = compilingEngine.compile(
"fib(num);" +
"function fib(n) {" +
" if(n <= 1) return n; " +
" return fib(n-1) + fib(n-2); " +
"};"
);
m.put("fib", script);
}
Bindings bindings = engine.createBindings();
bindings.put("num", "20");
Object result = script.eval(bindings);
System.out.println(result);
Mas eu preciso que ele execute o script dentro da pagina aberta em um JEditorPane…
Esse codigo abaixo é de um browser superSimples
package browser;
import java.awt.Cursor;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class Janela {
private JEditorPane saida;
private JFrame janela;
private JMenuBar menu;
private JMenu arquivo;
private JMenuItem fechar;
private JTextField endereco;
private JLabel l1;
private JScrollPane scroll;
Janela(){
janela=new JFrame ("Bowser");
janela.setSize(1024, 768);
janela.setLayout(null);
janela.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//cria barra de menu
menu=new JMenuBar();
//cria aba do menu
arquivo=new JMenu("Arquivo");
//cria opcao
fechar=new JMenuItem("Fechar");
arquivo.add(fechar);
menu.add(arquivo);
//seta o menu como default da janela
janela.setJMenuBar(menu);
//campo de endereco
endereco=new JTextField();
//atributos do campo de endereco (distancia horizontal, distancia vertical, largura, altura
endereco.setBounds(200,30,800,20);
l1=new JLabel("Endereco :");
l1.setBounds(130,30,100,20);
janela.add(l1);
//Cria a janela de exibicao da pagina
saida=new javax.swing.JEditorPane();
saida.setContentType("javascript/html");
saida.setEditable(false);
scroll=new JScrollPane(saida);
scroll.setSize(1000,600);
scroll.setLocation(0,100);
//possibilita utilizar links dentro da pagina
HyperlinkListener link = new HyperlinkListener(){
public void hyperlinkUpdate(HyperlinkEvent e){
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
try {
saida.setPage(e.getURL());
endereco.setText(saida.getPage().toString());
System.out.println(saida.getPage().toString());
}
catch (IOException ioe){
ioe.printStackTrace();
}
}
}
};
saida.addHyperlinkListener(link);
janela.add(endereco);
janela.add(scroll);
//coloca um evento no campo de endereco
endereco.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
URL url = criaUrl(endereco.getText());
if (url != null) {
try {
saida.setPage(url);
endereco.setText(saida.getPage().toString());
System.out.println(saida.getPage().toString());
} catch (IOException ex) {
Logger.getLogger(Janela.class.getName()).log(Level.SEVERE, null, ex);
}finally {
janela.setCursor(Cursor.getDefaultCursor());
}
} else {
JOptionPane.showMessageDialog(null, "Erro");
}
}
}
});
janela.setVisible(true);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//cria um objeto url com o que o usuario digitar
public URL criaUrl(String url) {
// Testa se o endereco inicia com "http://"
if (!url.toLowerCase().startsWith("http://")){
return null;
}
// tenta criar um objeto url com a string
URL enderecoAutenticado = null;
try {
enderecoAutenticado = new URL(url);
} catch (Exception e) {
return null;
}
return enderecoAutenticado;
}
public static void main(String[] args) {
Janela bowser = new Janela();
}
}
Nele eu posso abrir as paginas e clicar em links, mas ele nao executara javascript nem css
Vou dar mais uma pesquisada
Dei uma olhada e achei o rhino
alguem ja utilizou ele com a finalidade que preciso?
encontrei pouca referencia sobre o rhino se alguem tiver algo que possa me ajudar eu agradeco