2010-02-20 81 views
13

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

我正确吗?

我相问使用Javascript这个问题regarding obtaining the title of page displayed in an UIWebView。我曾经担心,如果JavaScript被禁用,它会失败,但它看起来API不允许禁用Javascript。

如果JavaScript不能被停用UIWebView,呈现我刚才的问题毫无意义。

+0

对于iOS 8及以上(每删除评论):“有一种方法,如果你使用的是新WKWebView而非UIWebView的做到这一点这是在这里找到答案http://stackoverflow.com/a/34404676/1239426。 “ – BadPirate 2016-08-08 21:12:31

回答

9

没有公共API来禁用Javascript。所以假设它不会被禁用是相当安全的。

12

有一种方法!使用正在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]; 
+0

非常适合我,谢谢! – Ponf 2014-06-11 15:30:40

+0

可悲的是,这不适用于iframe。