2010-02-20 66 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。