ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
HTML5支持Web Storage API,允许浏览器以比使用cookie更好的方式存储键/值对。Web Storage API提供了两种在本地存储数据的机制: * window.localStorage存储没有过期日期的数据。 * window.sessionStorage存储一个会话的数据(关闭浏览器选项卡时数据会丢失)。 JxBrowser提供允许使用本地和会话存储的API。请参阅以下方法: * Browser.getLocalWebStorage()返回本地Web存储实例。 * Browser.getSessionWebStorage()返回Session Web存储实例。 本地和会话存储实现相同的WebStorage接口,该接口提供使用存储的方法。 **要点**:如果JavaScript未访问localStorage变量,则Browser.getLocalWebStorage()方法返回null。原因是Chromium引擎中存在本地存储的延迟初始化。您需要访问JavaScript中的localStorage变量来初始化本地存储。之后,您可以通过JxBrowser Web Storage API访问它。这是当前实施的一个限制。以下代码段演示了如何解决此限制: ``` browser.addLoadListener(new LoadAdapter() { @Override public void onDocumentLoadedInMainFrame(LoadEvent event) { Browser browser = event.getBrowser(); // Initialize WebStorage browser.executeJavaScript("localStorage"); // Access WebStorage WebStorage webStorage = browser.getLocalWebStorage(); // Read and display the 'myKey' storage value. String itemValue = webStorage.getItem("myKey"); } }); ``` 以下示例演示如何访问已加载网页的本地Web存储,读取和设置键/值对: ``` import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.LoadHTMLParams; import com.teamdev.jxbrowser.chromium.LoggerProvider; import com.teamdev.jxbrowser.chromium.WebStorage; import com.teamdev.jxbrowser.chromium.events.LoadAdapter; import com.teamdev.jxbrowser.chromium.events.LoadEvent; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import javax.swing.*; import java.awt.*; import java.util.logging.Level; /** * The sample demonstrates how to access WebStorage on * the loaded web page using JxBrowser API. */ public class WebStorageSample { public static void main(String[] args) { LoggerProvider.setLevel(Level.OFF); Browser browser = new Browser(); BrowserView view = new BrowserView(browser); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.add(view, BorderLayout.CENTER); frame.setSize(800, 600); frame.setLocationRelativeTo(null); frame.setVisible(true); browser.addLoadListener(new LoadAdapter() { @Override public void onDocumentLoadedInMainFrame(LoadEvent event) { Browser browser = event.getBrowser(); WebStorage webStorage = browser.getLocalWebStorage(); // Read and display the 'myKey' storage value. System.out.println("The myKey value: " + webStorage.getItem("myKey")); // Modify the 'myKey' storage value. webStorage.setItem("myKey", "Hello from Local Storage"); } }); browser.loadHTML(new LoadHTMLParams( "<html><body><button onclick=\"myFunction()\">" + "Modify 'myKey' value</button>" + "<script>localStorage.myKey = \"Initial Value\";" + "function myFunction(){alert(localStorage.myKey);}" + "</script></body></html>", "UTF-8", "http://teamdev.com")); } } ```