java - 无法使用 java 将值设置为 JxBrowser localstorage

标签 java web local-storage jxbrowser

我想在加载时设置浏览器的语言,为此我将“语言”值设置为浏览器的本地存储。

这是浏览器初始化代码。

BrowserPreferences.setChromiumSwitches("--disable-web-security",
        "--allow-file-access-from-files");

String randomStr = UUID.randomUUID().toString();
jxbrowserDataDirPath = BrowserPreferences.getDefaultChromiumDir() + "\\" + randomStr;

browser = new Browser(BrowserType.LIGHTWEIGHT, new BrowserContext(new BrowserContextParams(jxbrowserDataDirPath)));
final BrowserView browserView = new BrowserView(browser);
browser.setDialogHandler(new DefaultDialogHandler(browserView));
browser.setPopupHandler(new DefaultPopupHandler());

browser.getCacheStorage().clearCache();
this.add(browserView, BorderLayout.CENTER);

初始化浏览器后,我通过 URL 加载网页,然后将值设置为本地存储。

browser.loadURL("file:///" + FILE_LOCATION + File.separator + "setting.html"); 
browser.getLocalWebStorage().setItem("language", "en");

但是该值未设置为本地存储,我想知道此行为的原因?

<小时/>

此外,当我使用浏览器 loadListner 时,它工作正常

browser.addLoadListener(new LoadAdapter()
    {
      @Override
      public void onDocumentLoadedInFrame(FrameLoadEvent arg0)
      {
        setLocalStorageValue(key, value);
      }
    });

但由于某些原因,我无法在代码中使用 loadListner,因此我尝试在加载浏览器后设置该值。

最佳答案

只有在完全加载 HTML 页面并在其上初始化 JavaScript 上下文后,才能访问 Web 本地存储。因此,要使用 Web 本地存储,您需要确保 HTML 页面已加载。

同时,异步调用Browser.loadURL方法。为了确保网页完全加载,您必须使用 LoadListener.onFinishLoadingFrame() 事件。

因此,出现您的问题是因为在页面加载之前调用了 browser.getLocalWebStorage().setItem("language", "en");

关于java - 无法使用 java 将值设置为 JxBrowser localstorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549053/

相关文章:

java - 使用java在MongoDB集合中插入文档时出错

java - 如果我有一个window.open,我会丢失我的cookie吗?

javascript - 在 URL 中传递 base64 信息作为查询字符串的正确方法?

javascript - HTML5 本地存储在 IE 中不起作用

iphone - iPhone Safari 上的 HTML5 - localStorage 存储的数据并不总是持久存在。为什么?

java - 正确使用 split 函数

java - Java ME 中的二进制消息有多可靠

java - 其他具有编译时/运行时 "mixins"功能的框架,例如 Spring Roo for Java

performance - Mobile Safari 上的 Web 应用程序性能跟踪?

session - 为什么大多数网站在没有 cookie 的情况下无法运行?