UIWebView:你能禁用Javascript吗?

时间:2010-02-20 17:21:15

标签: javascript iphone uiwebview

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

我说错了吗?

我使用Javascript询问这个问题regarding obtaining the title of page displayed in an UIWebView。我担心如果Javascript被禁用会失败,但似乎API不允许禁用Javascript。

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

2 个答案:

答案 0 :(得分:13)

有办法!使用iOS 5.1及更高版本部分支持的Content Security Policy和自定义标题:

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];

答案 1 :(得分:9)

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