はじめに
少し前にJavaScriptからiOSアプリにフックするやつを書いたのですが、
そのあとにObjective-CからHTMLを書き換えるというようなことがあった(現在進行形)ので
ソースコード
ViewController.m
# import "ViewController.h"
@interface ViewController () <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_webView.delegate = self;
NSURL *url = [NSURL URLWithString:@"https://nnsnodnb.moe/js-bridge/jshook.html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *javaScript = @"document.getElementById('hoge').value = 'ご飯炊けたよぉぉぉぉ!!!!';";
[_webView stringByEvaluatingJavaScriptFromString:javaScript];
}
@end
今回も私の自宅サーバさんが役に立ってくれそうです。久しぶりにATS問題に引っかかり Info.plist
を書き換えるすら面倒になってしまったのでサーバにちょちょいとアップロードしました。
もしテストしてみたいとかあればどうぞ使ってください(?)
ちなみに当サイトでは、jQueryを載せているのですが以下の様なJavaScript操作はできませんでした。
できなかったScript
$('#hoge').attr('value', 'ご飯炊けたよぉぉぉぉ!!!!');
スクリーンショット
ブラウザで開く
JavaScript操作を行う
スクリーンショットを撮ったあとに inputタグ
に disabled属性
をつけてみました。
jshook.html
<input type="text" id="hoge" value="hogehogehoge" disabled>
やってみたいからこんなの追加してくれ!とかあったらコメントでオナシャス
部長様の記事
[WebViewシリーズ①] WebViewのイベントをフックする
[WebViewシリーズ②] WebView内でJavaScriptのメソッドを操作する
[WebViewシリーズ③] WebViewは、ページ内のアンカーへリンクできない??
[WebViewシリーズ④] WebView(アプリ内)のリンクからiTunesが表示できない