jxBrowser 错误 class 不存在
jxBrowser error class don't exist
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
browser.registerFunction("MyFunction", new BrowserFunction() {
public JSValue invoke(JSValue... args) {
System.out.println("MyFunction is invoked!");
return JSValue.create("Hello!");
}
});
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body><a href='#' onclick='MyFunction();'>Call Java method</a></body></html>");
}
}
我已经添加了所有的 jar 文件,但是 BrowserFunction 不存在,为什么?
所有其他类工作完美,不明白问题,我
导入了所有的jar 提前感谢大家
据我所知,使用BrowserFunction()
注册功能在新版本的jxbrowser中已经消失了。 6.1版本中有一种新方法描述here。将新方法放入您的代码中:
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
Browser browser = event.getBrowser();
JSValue value = browser.executeJavaScriptAndReturnValue("window");
value.asObject().setProperty("java", new Events());
}
}
});
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body><a href='#' onclick='alert(java.MyFunction());return false;'>Call Java method</a></body></html>");
}
}
创建另一个文件来保存 Events
class :
public class Events {
public String MyFunction() {
System.out.println("MyFunction is invoked!");
return new String("Hello");
}
}
* 添加 return false
到 a
标签的 onclick
属性末尾,防止浏览器在点击时跟随 link href
。
顺便说一句,我建议您使用 main documentation 代码,因为它们是最新的。
为了使用 BrowserFunction
你应该有 licence.jar 并将它添加到你的类路径中。
JxBrowser 有 30 天的免费试用期。您也可以购买许可证。
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
browser.registerFunction("MyFunction", new BrowserFunction() {
public JSValue invoke(JSValue... args) {
System.out.println("MyFunction is invoked!");
return JSValue.create("Hello!");
}
});
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body><a href='#' onclick='MyFunction();'>Call Java method</a></body></html>");
}
}
我已经添加了所有的 jar 文件,但是 BrowserFunction 不存在,为什么?
所有其他类工作完美,不明白问题,我
导入了所有的jar 提前感谢大家
据我所知,使用BrowserFunction()
注册功能在新版本的jxbrowser中已经消失了。 6.1版本中有一种新方法描述here。将新方法放入您的代码中:
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
Browser browser = event.getBrowser();
JSValue value = browser.executeJavaScriptAndReturnValue("window");
value.asObject().setProperty("java", new Events());
}
}
});
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.loadHTML("<html><body><a href='#' onclick='alert(java.MyFunction());return false;'>Call Java method</a></body></html>");
}
}
创建另一个文件来保存 Events
class :
public class Events {
public String MyFunction() {
System.out.println("MyFunction is invoked!");
return new String("Hello");
}
}
* 添加 return false
到 a
标签的 onclick
属性末尾,防止浏览器在点击时跟随 link href
。
顺便说一句,我建议您使用 main documentation 代码,因为它们是最新的。
为了使用 BrowserFunction
你应该有 licence.jar 并将它添加到你的类路径中。
JxBrowser 有 30 天的免费试用期。您也可以购买许可证。