UIWebView: вы можете отключить Javascript? - PullRequest
13 голосов
/ 20 февраля 2010

Вы можете отключить Javascript в мобильном браузере Safari и Cocoa, но я не вижу возможности сделать это в UIWebView.

Я прав?

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

Если Javascript не может быть деактивирован UIWebView, это делает мой предыдущий вопрос спорным.

Ответы [ 2 ]

13 голосов
/ 14 августа 2013

Есть способ! Использование политики безопасности содержимого , которая частично поддерживается в iOS 5.1 и более поздних версиях, и настраиваемый заголовок:

X-WebKit-CSP: script-src none;

Вы можете указать UIWebKit, чтобы он не разрешал JavaScript на странице полностью. (или выборочно разрешить скрипт только из определенного домена, более подробную информацию можно найти в spec .

Чтобы сделать это с сервера, которым вы управляете, вам нужно изменить заголовки ответов для страницы, чтобы они включали заголовок X-WebKit-CSP ... Чтобы сделать это на локальных страницах (обычный текст или данные HTML на устройстве), вам нужно будет определить и зарегистрировать собственный NSURLProtocol для загрузки вашей страницы и отправить заголовок в ваш созданный NSHTTPURLResponse:

NSDictionary *headers = [NSDictionary dictionaryWithObjectsAndKeys:
                         @"script-src none",@"X-WebKit-CSP",
                         @"text/html",@"Content-type",
                         encoding,@"Content-encoding",
                         nil];
NSHTTPURLResponse *urlResponse = [[NSHTTPURLResponse alloc] initWithURL:self.request.URL
                                                         statusCode:200
                                                        HTTPVersion:@"1.1"
                                                       headerFields:headers];
[self.client URLProtocol:self didReceiveResponse:urlResponse cacheStoragePolicy:NSURLCacheStorageAllowedInMemoryOnly];
9 голосов
/ 20 февраля 2010

Нет общедоступного API для отключения Javascript. Так что можно с уверенностью предположить, что он не будет отключен.

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