我正在使用RIM JRE创建一个Blackberry应用程序6.第一次创建BrowserField时,会创建一个cookie。在某个时刻(取决于用户输入),必须删除cookie。为此,我打开一个BrowserField,我正在尝试删除存储在BrowserField中的cookie。目前,我没有在RIM api中提供的方法明确删除BrowserField的cookie,因此我使用BrowserField类中给出的executeScript方法执行一些javascript来删除cookie。在运行requestContent方法之前,javascript在onUiEngineAttached方法中执行。但是这会导致应用程序崩溃并出现IllegalStateException和消息:
无法执行脚本 - 脚本引擎不存在
我不相信这是javascript未被初始化的结果,因为默认情况下它应该从BrowserFieldConfig类开启。我不确定我是否正确格式化我的JavaScript。这是我正在使用的代码:
protected void onUiEngineAttached(boolean attached)
{
if(attached)
{
// ... Removed unnecessary code
// Retrieve the cookie manager for the embedded browser
BrowserFieldCookieManager cookieManager = _browserField.getCookieManager ();
if (eraseCookie == true)
{
String temp = cookieManager.getCookie ("someSite");
while (temp.indexOf ("testCookie") != -1)
{
_browserField.executeScript("javascript:document.cookie = \"testCookie=; expires=Thu, 01-Jan-70 00:00:01 GMT\"");
}
}
// Requests browser to go to URL with body and header information
_browserField.requestContent(_url, _body.getBytes(), _header);
}
};
这可能是一个线程问题,但我不知道如何解决这个问题。所以任何帮助都表示赞赏。
谢谢。
答案 0 :(得分:0)
我还没有使用过BrowserFieldCookieManager界面,但你是否尝试在cookie管理器上调用setCookie(url,null)或setCookie(url,“”)来清除cookie?我意识到这个领域的API文档很少。如果这些都不起作用,请尝试将cookie替换为已经过期的cookie。
另一种方法是在创建BrowserField实例时替换您自己的cookie管理器。请参阅BrowserFieldConfig的文档:
答案 1 :(得分:0)
嗯,我无法帮助你使用BrowserFieldCookieManager,但是这是一个非常有用的网站,让我开始并提供了我用于cookie管理的脚本(如果没有别的,它应该让你知道BrowserFieldCookieManager在幕后做什么以及如何让它做你想做的事。)
http://www.quirksmode.org/js/cookies.html
特别关注它如何删除cookie,将其替换为即时过期的空cookie。
答案 2 :(得分:0)
如果您的意图是完全不使用cookie的另一种方法是在BrowserFieldConfig
内使用此属性。
BrowserFieldConfig config = new BrowserFieldConfig();
config.setProperty(BrowserFieldConfig.ENABLE_COOKIES, Boolean.FALSE);