[Titanium]WebViewの遷移先を横取りする

最近まーったくTiを触れていないのですが。書くと役立ちそうな話題を見かけたのでちょっとだけ。

WebViewを利用したアプリケーションの場合によくあるのが、
特定のドメイン(URL)じゃないページへ遷移する場合は、通常のブラウザアプリ(Safari等)で開く
という要件です。
Ti.UI.WebView で、遷移先(遷移しようとしている)URLを知りたい ~ 'beforeload' イベントで url が反映されない件 #titaniumjp #titanium - harukazepcの日記

harukazepcさんは、本来こういう用途に使うはずのbeforeLoadが動かないことを指摘した上で、ソースコードにパッチを当てて治す方法を紹介されています。
ちゃんと治せる方はそれが一番だとは思うのですが、再コンパイルにはいろいろ問題もあると思うので、コードレベルでごまかしたノウハウを紹介します。
Androidでも原理的には動く気がしますが、iPhoneでしかテストしていません。あと、HTML側をいじるので、自分の制御下にあるHTML以外で実現することはとっても困難です。

上記WebViewを利用したアプリケーションの場合、普通はアプリ内にあるHTMLをWebViewで表示しているはずです。
というわけで、HTML側にJavaScriptを仕込みます。(jQuery使ってます)

その上で、WebViewをのっけているViewが、linkclickイベントをキャッチしてあげれば、ユーザーがaリンクをクリックした場合の挙動をコントロールすることができます。

特定のリンクだけ自分で処理して、それ以外はWebViewに任せたい時は、HTML側のJavaScriptをいじって、e.preventDefaultを呼び出さないようにすれば本来のaリンクの処理が発動されます。

自分の支配下にないHTML(例えばYahooやGoogleのトップページ)であっても、黒魔術を駆使すれば同様のJavaScriptを送り込むことは不可能ではないはずですけど、めんどくさいのであまりお勧めしません。

自分の場合、tel://で始まるリンクを横取りして、電話の前に確認ダイアログを出すのに使ってました。

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: [Titanium]WebViewの遷移先を横取りする

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/1469

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2012年3月15日 22:10に書いたブログ記事です。

ひとつ前のブログ記事は「 俺の話を聞け に行ってきた 」です。

次のブログ記事は「 「世界を変えた6つの飲み物 - ビール、ワイン、蒸留酒、コーヒー、紅茶、コーラが語るもうひとつの歴史」 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type