そのWebView上でリンクを開いてしまうようなので、これを何とかしたい。
手順としては、
WebView上のリンクをクリックしたら、
Titanium へリンクがクリックされたというイヴェントと共に、
リンク先URLを送る。
更に、リンククリックを無効化する。
次に、
Titanium側でリンクがクリックされたイヴェントを発火させる。
受け取ったリンクを元に、新しいWindowとWebViewを開く。
まぁ、書いてみると、たいしたことではない。
忘れる前に参考URL
jQueryでリンクを無効にするやり方はコチラ。
http://black-flag.net/jquery/20110526-3128.html
TitaniumのWebViewからリンククリックイヴェントを取得するやり方はコチラ。
http://www.mountposition.co.jp/blog/?p=81
実際に書いてみるとこんな感じ。
【html側】
$(document).ready(function(){
$("a").live("click",function(e){
var link = $(this).attr("href");
Ti.App.fireEvent("linkClick", {link:link});
return false;// or e.preventDefault();
});
});
で、Titanium側は
【Titanium側】
Ti.App.addEventListener("linkClick",function(e){
var win = Ti.UI.createWindow();
var linkView = Ti.UI.createWebView({url:e.link});
win.add(linkView);
win.open({animated:true,fullscreen:true});
});
return false;// or e.preventDefault();
で、A要素をクリックしたときのイヴェントを打ち消してる
(現在ののWebView上でURLを開かないようにしている)感じ。
まぁ、あとは参考URLのとおりです。
$("a").live() にしているのは、
動的に要素を追加した時とかに困るから。
jQuery1.7 系からは on/off とかだっけ?忘れた。それとは別か?
まぁ、こんな感じですね~。
あんまり、 $(document).ready(function(){}); の中にコード書きたくないんだけど、まぁ、いいかな。たまには。
0 件のコメント:
コメントを投稿