UIWebView内の処理を自分でコントロールする

javascriptの処理をCocoa touchアプリから触れないかなあと思っていたら、皆さんから色々なアドバイスをいただきました。 多謝です!
7
iphone_dev_jp @iphone_dev_jp

UIWebViewでJQTouchを使っていて、クリックされた内容をフックするには、何かいい方法はないのでしょうか?それともフックしたらrejectされるとかってありますか? [@kaki_gnu]

2010-10-05 14:46:03
Hirohito Kato ⌘ @hkato193

ああ、そういえば自分もUIWebViewでjavascriptの処理をフックできるかどうか知らなかった。どうだろ。

2010-10-05 14:57:21
salexkidd @salexkidd

@hkato193 自分もそれすごく知りたい!

2010-10-05 14:58:27
nakamura001 @nakamura001

@hkato193 どういう用途ですか?フックについては出来るかどうか知らないですけど最悪、別のページに飛ばす様にしてページ読み込み完了のイベントで処理なら可能ですよ

2010-10-05 15:06:23
nakamura001 @nakamura001

@hkato193 既存のJavaScriptの書かれ方次第ですけど同じ関数名でなどで上書きすればフック出来るかも?

2010-10-05 15:08:40
Hirohito Kato ⌘ @hkato193

@nakamura001 @salexkidd 何かの処理に対して、リンクをクリックしたときのデリゲートが呼ばれるがごとくフックできないかなと思いまして。同じ関数名、というのはHTMLで同じ関数名ということですか?

2010-10-05 15:14:20
nakamura001 @nakamura001

@hkato193 @salexkidd 既存のJavaScriptの関数名を同じ名前で上書きという意味です

2010-10-05 15:20:26
salexkidd @salexkidd

@hkato193 自分は昨日ちょっとしたテストにUIWebViewを利用していて、「こっちからJSとかにデータ与えられるのかな?」と簡単な好奇心Onlyで昨日ふっと思った感じですな。

2010-10-05 15:21:12
nakamura001 @nakamura001

@hkato193 @salexkidd でもリンクをクリックしたときの動作をフックするだけなら UIWebViewNavigationTypeLinkClicked のときに処理させればOKです。return NO; にしたら既存の処理は行われません

2010-10-05 15:21:27
Hirohito Kato ⌘ @hkato193

@nakamura001 @salexkidd ありがとうございます!ということは、読み込んだHTMLの中のjavascript部分を差し替えてloadHTMLstring:、という流れになりますかね。素っ頓狂だったら恐縮ですが・・・

2010-10-05 15:25:35
nakamura001 @nakamura001

@hkato193 @salexkidd そうなります。ちょっとそちらのパターンで試した事が無いので多分というレベルですが。後で送ったリンククリックイベントでフックのパターンであれば自分で使った事が有るので確実に実現可能です。

2010-10-05 15:28:57
Hirohito Kato ⌘ @hkato193

@nakamura001 @salexkidd なるほどです。ありがとうございます!

2010-10-05 15:33:31
kishikawa katsumi @k_katsumi

@hkato193 stringByEvaluating~ でJavaScriptとかDOMを書き換えるのがいいと思います。

2010-10-05 15:34:39
GNUE(鵺) @gnue

@hkato193 @nakamura001 @salexkidd その辺はこの前のCocoa勉強会で新居さんが発表してた

2010-10-05 15:35:49
Hirohito Kato ⌘ @hkato193

@gnue @nakamura001 @salexkidd @k_katsumi ううっありがとうございます。Cocoa勉強会だとどんな方法だったのですか?

2010-10-05 15:36:39
GNUE(鵺) @gnue

@hkato193 @k_katsumi @nakamura001 @salexkidd Outside→Inside(Create:loadHTMLなど、Read/Update/Dalete:stringByEvaluatingJavaScriptFromString:)

2010-10-05 15:40:45
GNUE(鵺) @gnue

@hkato193 @k_katsumi @nakamura001 @salexkidd Inside→Outside(Create/Read/Update/Dalete:UIWebViewDelegate)と書いてある

2010-10-05 15:41:42
Hirohito Kato ⌘ @hkato193

@gnue おおお、ありがとうございます!

2010-10-05 15:42:04