我想在加载时将语言设置为浏览器,为此我将“语言”值设置为浏览器的本地存储。
这是浏览器初始化代码。
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);
在初始化浏览器后,我按网址加载网页,然后将值设置为本地存储。
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用于我的代码,因此我在加载浏览器后尝试设置该值。
答案 0 :(得分:1)
只有在HTML页面完全加载并在其上初始化JavaScript上下文后,才能访问Web本地存储。因此,要使用Web本地存储,您需要确保已加载HTML页面。
同时,异步调用Browser.loadURL
方法。要确保完全加载网页,您必须使用LoadListener.onFinishLoadingFrame()
事件。
因此,您的问题发生是因为在页面加载之前调用了browser.getLocalWebStorage().setItem("language", "en");
。