gpt4 book ai didi

java - 浏览 JavaScript

转载 作者:行者123 更新时间:2023-12-02 07:46:29 30 4
gpt4 key购买 nike

我想用 java 编写一个简单的网络浏览器,这是我的代码!

import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class WebBrowser extends JFrame {

/**
*
*/
private static final long serialVersionUID = 1L;

public JPanel
address_panel, window_panel;

public JLabel
address_label;

public JTextField
address_tf;

public JEditorPane
window_pane;

public JScrollPane
window_scroll;

public JButton
address_b;

private Go go = new Go();

public WebBrowser() throws IOException {

// Define address bar
address_label = new JLabel(" address: ", SwingConstants.CENTER);
address_tf = new JTextField("http://www.yahoo.com");
address_tf.addActionListener(go);
address_b = new JButton("Go");
address_b.addActionListener(go);

window_pane = new JEditorPane("http://www.yahoo.com");
window_pane.setContentType("text/html");
window_pane.setEditable(false);

address_panel = new JPanel(new BorderLayout());
window_panel = new JPanel(new BorderLayout());

address_panel.add(address_label, BorderLayout.WEST);
address_panel.add(address_tf, BorderLayout.CENTER);
address_panel.add(address_b, BorderLayout.EAST);

window_scroll = new JScrollPane(window_pane);
window_panel.add(window_scroll);

Container pane = getContentPane();
pane.setLayout(new BorderLayout());

pane.add(address_panel, BorderLayout.NORTH);
pane.add(window_panel, BorderLayout.CENTER);

setTitle("web browser");
setSize(800,600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public class Go implements ActionListener{

public void actionPerformed(ActionEvent ae){

try {

window_pane.setPage(address_tf.getText());

} catch (MalformedURLException e) { // new URL() failed
window_pane.setText("MalformedURLException: " + e);
} catch (IOException e) { // openConnection() failed
window_pane.setText("IOException: " + e);
}

}

}

public static void main(String args[]) throws IOException {
WebBrowser wb = new WebBrowser();
}

}

它适用于简单的 html 页面,但无法加载代码的 JavaScript 部分!我的问题是我应该在代码中添加什么来加载 JavaScript?谢谢!

最佳答案

Swing 的默认小部件仅对 HTML4 和 CSS 提供非常基本的支持,完全不支持 JavaScript(默认情况下)。您可以使用内置的 Rhino JavaScript 引擎来执行代码,但这必须手动完成,而且非常困难。 HtmlUnit使用这种策略来解析 HTML 页面并执行 JavaScript,但它的兼容性通常很差,并且完全缺少渲染器,因此您必须自己编写(即不显示,只能通过代码访问页面内容)。

有一些基于 Swing 的浏览器小部件,它们嵌入了 Gecko (Firefox) 或 WebKit (Chrome/Safari) 渲染器,因此能够利用适当的 JavaScript 解释器,但它们都有缺陷,而且价格昂贵,或未维护。这些都支持 JavaScript,但它们通常使用各种浏览器引擎的非常旧的版本,除了缺乏跨平台兼容性之外,与现代网站的兼容性也很差。

Eclipse 的 SWT项目包含一个浏览器小部件,该小部件似乎得到了积极维护,但它依赖于 SWT 库,并且在 Swing 应用程序中使用起来会有些困难,尽管这可能是可能的。 SWT 是一个与 AWT/Swing(您当前正在使用的)完全不同的 UI 工具包,为了利用其浏览器小部件,您必须找到一种方法将其嵌入到 Swing 应用程序中,或者仅使用SWT 工具包。

总的来说,SWT 的浏览器可能是您在 Java 中获得一个像样的浏览器的最佳选择,但使用起来可能仍然很麻烦。祝你好运!

关于java - 浏览 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772032/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com