import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.JSValue; import com.teamdev.jxbrowser.chromium.LoggerProvider; import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; import com.teamdev.jxbrowser.chromium.events.LoadAdapter; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import javax.swing.*; import java.awt.*; import java.util.logging.Level; /** * The sample demonstrates how to send form data from JavaScript to Java. */ public class JavaScriptJavaFormSample { public static void main(String[] args) { LoggerProvider.setLevel(Level.OFF); Browser browser = new Browser(); BrowserView view = new BrowserView(browser); JFrame frame = new JFrame(); frame.getContentPane().add(view, BorderLayout.CENTER); frame.setSize(800, 600); frame.setLocationRelativeTo(null); frame.setVisible(true); 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("Account", new Account()); } } }); browser.loadURL("form.html"); } /** * Java class used for binding Java to JavaScript must be public. */ public static class Account { public void save(String firstName, String lastName) { System.out.println("firstName = " + firstName); System.out.println("lastName = " + lastName); } } }
Where the form.html file has the following content:
(其中form.html文件具有以下内容:)
<!DOCTYPE html> <html> <head> <script type="text/javascript"> function sendFormData() { var firstNameValue = myForm.elements['firstName'].value; var lastNameValue = myForm.elements['lastName'].value; // Invoke the 'save' method of the 'Account' Java object. Account.save(firstNameValue, lastNameValue); } </script> </head> <body> <form name="myForm"> First name: <input type="text" name="firstName"/> <br/> Last name: <input type="text" name="lastName"/> <br/> <input type="button" value="Save" onclick="sendFormData();"/> </form> </body> </html>