UIWebView:你能禁用Javascript吗?

Tec*_*Zen 13 javascript iphone uiwebview

您可以在移动Safari和Cocoa的WebView中禁用Javascript,但我看不到这样做的方法UIWebView.

我对么?

关于获取UIWebView使用Javascript中显示的页面标题,我询问了这个问题.我担心如果Javascript被禁用会失败,但似乎API不允许禁用Javascript.

如果Javascript无法停用UIWebView,则会使我之前的问题无法解决.

Bad*_*ate 13

有一种方法!使用iOS 5.1及更高版本部分支持的内容安全策略和自定义标头:

X-WebKit-CSP: script-src none;
Run Code Online (Sandbox Code Playgroud)

你可以告诉UIWebKit完全不允许在页面上使用javascript.(或选择性只允许脚本从特定的域,在详细信息规范.

要从您控制的服务器执行此操作,您必须修改页面的响应标头以包含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];
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用新的WKWebView而不是UIWebView,有一种方法可以做到这一点.这是在这里回答的.http://stackoverflow.com/a/34404676/1239426 (2认同)

Ste*_*ntz 9

没有公共API来禁用Javascript.因此,假设它不会被禁用是相当安全的.