我正在使用RIM JRE 6制作Blackberry应用程序。第一次创建BrowserField时,会创建一个cookie。在某个时刻(取决于用户输入),Cookie必须被删除。为此,我打开一个BrowserField,并试图删除存储在BrowserField中的Cookie。目前,我不知道在RIM api中提供的方法显式删除BrowserField的cookie,因此我使用BrowserField类中给出的executeScript方法执行一些JavaScript来删除Cookie。在运行requestContent方法之前,javascript会在onUiEngineAttached方法中执行。但是,这会导致应用程序与一个IllegalStateException和消息崩溃:BrowserField Cookie删除
无法执行脚本 - 脚本引擎不存在
我不相信这是没有被初始化,如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);
}
};
它可能是一个线程问题,但我不知道如何解决这个问题。所以,任何帮助表示赞赏。
谢谢。
再次感谢您的帮助Eric:)。将cookie设置为null只会导致抛出NullPointerException,而将值设置为“”只会导致创建一个没有值的新cookie。使用setCookie设置cookie(url,“testCookie = 123; expires = Thu,01-Jan-70 00:00:01 GMT;”);对浏览器中cookies的状态没有任何作用。我不确定如何设置自定义Cookie管理器,因为BrowserFieldConfig似乎只接受预先配置的Cookie管理器。 – 2011-01-28 02:44:15