最近まーったく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://で始まるリンクを横取りして、電話の前に確認ダイアログを出すのに使ってました。