我正在使用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