localStorage UIWebView iPhone / iPad сохранение или чтение не работает .. иногда? - PullRequest
0 голосов
/ 30 июня 2011

У меня есть 2 приложения HTML5, которые используют:

 localStorage[key] = value;

для сохранения данных (я пробовал другие методы localStorage, такие как localStorage.keyName = "Bla" с той же проблемой). Файлы добавляются в виде файлов ссылок (синяя папка) с этим кодом для отображения в UIWebView:

NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html" 
                                                inDirectory:@"/some_path" ];

NSString *html = [NSString stringWithContentsOfFile:htmlPath 
                                           encoding:NSUTF8StringEncoding 
                                              error:nil];

[webView loadHTMLString:html 
                baseURL:[NSURL fileURLWithPath:
                         [NSString stringWithFormat:@"%@/some_path/", 
                          [[NSBundle mainBundle] bundlePath]]]];
webView.scalesPageToFit = YES;

Странно, что localStorage (javascript) работает в одном приложении, а в другом - нет. На том, где это не работает, я попробовал код try / catch, чтобы получить ошибку, и я получил DOM 18 Security_Err. Похоже, это не позволило бы мне получить к нему доступ, потому что файлы являются локальными. Это имело бы смысл, если бы это было в обоих приложениях.

Я понятия не имею, что отличается, так как код в обоих из них почти одинаков. Я не добавил специальной функции для UIWebView для отключения каких-либо специальных ограничений безопасности.

Я действительно не знаю, что случилось. Единственное, что отличается, это сторона HTML / JS / CSS. Я не думаю, что эта проблема вызвана кодом Cocoa Touch, поскольку я буквально скопировал проект для создания второго приложения.

Заранее спасибо, и если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать. Я не смог найти какие-либо решения в Google или здесь. Информация о ключе / значении localStorage, по-видимому, отсутствует. Это имеет смысл, поскольку его так легко использовать, но все же. У кого-нибудь еще есть эта проблема?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Попробуйте это:

localStorage.removeItem('keyName');
localStorage.setItem('keyName','keyValue');

Я считаю, что вы всегда должны удалить, прежде чем установить.

0 голосов
/ 07 июля 2011

Я нашел какой-то ответ. Интересно, может ли какой-нибудь другой разработчик Cocoa Touch пролить свет на это? Код, который я использую для загрузки HTML, таков:

-(void)setUpWebview
{
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                         ofType:@"html" 
                                                    inDirectory:@"/proj_folder" ];

    NSString *html = [NSString stringWithContentsOfFile:htmlPath 
                                               encoding:NSUTF8StringEncoding 
                                                  error:nil];

    [webView loadHTMLString:html 
                    baseURL:[NSURL fileURLWithPath:
                             [NSString stringWithFormat:@"%@/proj_folder/", 
                              [[NSBundle mainBundle] bundlePath]]]];

    // disable scrolling on webview
    [[[webView subviews] lastObject] setScrollEnabled:NO];

}

Я получаю сообщение «ОШИБКА БЕЗОПАСНОСТИ: исключение DOM 18» только на первой загружаемой странице (index.html). Как только я перехожу на другие страницы, этого не происходит. Ужасный обходной путь, который я нашел, - это перезагрузить страницу индекса, когда кто-то туда попадает.

Я уверен, что есть способ отключить эту функцию безопасности со стороны Obj C?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...