我正在使用RIM 6制作一个黑莓应用程序。第一次创建BrowserField时,就创建了一个cookie。在某一时刻(取决于用户输入),必须删除cookie。为此,我将打开一个BrowserField,并尝试删除存储在BrowserField中的cookies。目前,我知道RIM中没有为BrowserField显式删除cookies的方法,所以我使用BrowserField类中提供的executeScript方法来执行一些javascript来删除cookies。javascript在运行onUiEngineAttached方法之前在requestContent方法中执行。但是,这会导致应用程序与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);
}
};这可能是一个线程问题,但我不知道如何解决这个问题。所以任何帮助都是非常感谢的。
谢谢。
发布于 2011-01-27 19:00:45
到目前为止,我还没有使用BrowserFieldCookieManager接口,但是您是否尝试过调用cookie管理器上的setCookie( url,null )或setCookie( url,"“)来清除cookie?我意识到API文档在这个领域是稀疏的。如果这两项工作都没有完成,请尝试将cookie替换为时间已经过期的cookie。
另一种选择是在创建BrowserField实例时替换自己的cookie管理器。请参阅BrowserFieldConfig的文档:
http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/browser/field2/BrowserFieldConfig.html
发布于 2011-05-23 01:38:30
嗯,我无法帮助您使用BrowserFieldCookieManager,但是这里有一个非常有用的网站,它帮助我启动并提供了我用于cookie管理的脚本(如果没有其他的话,它应该让您了解BrowserFieldCookieManager在幕后做什么,以及如何让它做您想做的事情)。
http://www.quirksmode.org/js/cookies.html
特别是看看它是如何删除cookie的,方法是用立即过期的空cookie来替换它们。
发布于 2013-05-24 21:27:37
另一种完全不使用cookie的方法(如果这是您的意图)是在BrowserFieldConfig中使用这个属性。
BrowserFieldConfig config = new BrowserFieldConfig();
config.setProperty(BrowserFieldConfig.ENABLE_COOKIES, Boolean.FALSE);https://stackoverflow.com/questions/4811175
复制相似问题