IOS7 не может получить доступ к локальному хранилищу HTML5, если файлы cookie отключены
На iOS7, пытаясь получить доступ к объекту localStorage HTML5 через JavaScript, останавливает выполнение Javascript. Он корректно работает в предыдущих версиях iOS.
Приложение отлично работает, когда приложение обновляется и запускается. Но затем я закрываю приложение и запускаю его снова, он не работает и не работает при доступе к localStorage.
Чтобы отключить файлы cookie, я использовал ниже код:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
Чтобы получить доступ к localStorage, я использовал ниже код:
CGRect rect = self.view.frame;
UIWebView* webView = [[UIWebView alloc] initWithFrame:rect];
[self.view addSubview:webView];
[webView loadHTMLString:@"<script>alert('hello world');alert(localStorage);</script>" baseURL:nil]
Я просмотрел документы iOS7, но не смог найти обновления, связанные с этой проблемой. Кто-нибудь сталкивался с этим тоже? Пожалуйста, поделитесь любой информацией об этом, было бы очень полезно. Какие-нибудь обходные пути для этого?
Спасибо
Ответы
Ответ 1
Предоставлено это более старое сообщение, но fwiw...
Не уверен, что я столкнулся с этой проблемой. Использовали localStorage с файлами cookie и без них в нескольких проектах с помощью iOS6/7.
Представленная loadHTMLString выглядит немного странной для меня... поэтому я попробовал это вместо этого...
[webView stringByEvaluatingJavaScriptFromString:@"alert('hello world');alert(localStorage);"];
..., который отлично работал и показал объект localStorage, как и ожидалось, с отключенными cookie.
Протестировано в sim и на устройстве iOS7.
Ответ 2
Не уверен, что это поможет, но вы можете пройти через блог здесь -
http://transitionalreality.blogspot.in/2014/03/html-5-local-storage-with-ios-app.html
Я внедрил локальное хранилище HTML5 по-своему, и это может быть то, что вы ищете.
Ответ 3
Try:
window.localStorage
например:
[webView loadHTMLString:@"<script>alert('hello world');alert(window.localStorage);</script>" baseURL:nil];