追記です。
half_sleeping様のご教授によりstringByEvaluatingJavaScriptFromString:でUIWebViewにMETAタグを挿入する事が出来ました。誠にありがとうございます。
しかしながら下記のソースコードではJavaScriptを無効化することが出来ませんでした。
[webView stringByEvaluatingJavaScriptFromString:@"var bodyNode = document.getElementsByTagName('head').item(0);"
"var titleNode = document.getElementsByTagName('title').item(0);"
"var newNode = document.createElement('meta');"
"newNode.name = 'http-equiv="Content-Security-Policy";"
"newNode.content = 'script-src none';"
"bodyNode.insertBefore(newNode, titleNode);"];
上記は<meta http-equiv="Content-Security-Policy" content="script-src none">を挿入しようとしております。
その他、Content-Security-Policyの箇所をX-WebKit-CSPに変えたりと試行しておりますが思う様に無効化が反映されません。
修正箇所をご存知の方はお教え頂けますと幸いです。
何卒宜しくお願い致します。
いつも拝見させて頂いております。
XCode, Objective-C にて
stringByEvaluatingJavaScriptFromStringメソッドを使って
iOSのブラウザに対する定義をmetaタグで追加し
UIWebView上のJavaScriptを無効にしたいのですが既存のコードにうまく挿入する事が出来ません。
下記のコードを用意しましたが、アクセス先URLの入ったNSMutableArrayに
_strUrlに絡ませることが出来ず、思う様に処理を挿入する事が出来ません。
お知恵をお貸し頂けると幸いです。
宜しくお願い致します。
[webView stringByEvaluatingJavaScriptFromString:@"var bodyNode = document.getElementsByTagName('head').item(0);"
"var titleNode = document.getElementsByTagName('title').item(0);"
"var newNode = document.createElement('meta');"
"newNode.name = 'http-equiv="Content-Security-Policy";"
"newNode.content = 'script-src none';"
"bodyNode.insertBefore(newNode, titleNode);"];
ソースコードはMainViewControllerにUITableViewを設置、
アクセス先をCellに表示しタップでDetailViewControllerにアクセス、
UIWebViewを表示しています。
主要箇所のみ抜粋致します。
DetailViewController.h
- (void)loadingWebView
{
NSString *escapedUrlString = _strUrl;
NSURL *urlString = [NSURL URLWithString:escapedUrlString]; NSURLRequest *urlReq = [NSURLRequest requestWithURL:urlString]; [webView loadRequest:urlReq]; [webView stringByEvaluatingJavaScriptFromString:@"var bodyNode = document.getElementsByTagName('head').item(0);" "var titleNode = document.getElementsByTagName('title').item(0);" "var newNode = document.createElement('meta');" "newNode.name = 'http-equiv=\"Content-Security-Policy\";" "newNode.content = 'script-src none';" "bodyNode.insertBefore(newNode, titleNode);"];
}
ViewController.m
-
(void)viewDidLoad {
[super viewDidLoad];myDataSource = [[NSMutableArray alloc]init];
[myDataSource addObject:[[NSArray alloc]initWithObjects:@"テストURL", @"http://www.test.com/test.html", nil] ];
}
-
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; DetailViewController *controller = segue.destinationViewController; controller.strUrl = [[myDataSource objectAtIndex:indexPath.row] objectAtIndex:1];
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/15 11:38 編集