您可以在移动版Safari和Cocoa的WebView中禁用Javascript,但我在UIWebView
中看不到这样做。
我说错了吗?
我使用Javascript询问这个问题regarding obtaining the title of page displayed in an UIWebView
。我担心如果Javascript被禁用会失败,但似乎API不允许禁用Javascript。
如果无法停用Javascript UIWebView
,则会使我之前的问题无法解决。
答案 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。因此,假设它不会被禁用是相当安全的。