http://www.johnnnnny.com/blog/?p=82
Titanium の WebView で HTML をホスト
http://akabeko.sakura.ne.jp/blog/2010/11/titanium-%E3%81%AE-webview-%E3%81%A7-html-%E3%82%92%E3%83%9B%E3%82%B9%E3%83%88/
ここらへんを見たんだけど、
要は、Evalするんで、Evalできるようなものじゃないとだめ。
難しいなー。難しくは無いんだけど、なんだろね。
【html側】
var test = function(obj){
$("#dummy").before(obj["val"]);
}
【Androidアプリ側】
var wv = Ti.UI.createWebView({url:"test.html"});
var btn = Ti.UI.createButton({title:"hoge",width:300,height:50});
btn.addEventListener = function(e){
var obj = {val:"hoge"};
var js = "test(" + obj + ");";
webview.evalJS(js);
}
これで、btnを押したら、WebViewでhogeって文字が出て欲しい。
まぁ、勿論でないのは、わかる。動きません。
なんていうの?そのー、変数の実体を渡したいの。僕は。
でも、それが出来ないということなんだと思う。つまり。
つか、Evalなんだから、当たり前なんだけど。
つまり、オブジェクトを渡したいなら、
JSON化しなきゃならん。つまりそういうことなんだろうなと思う。
配列にせよ、同じなんだろうが。
コンテキストをまたいでデータを参照で共有する方法
http://ti.masuidrive.jp/topic.php?id=221#post-655
ここらへんかな?
まぁ、そういうわけなんで、解決方法としては、
var js = "test(" + obj + ");";
の部分を、
var js = "test(" + JSON.stringify(obj) + ");";
と書いてあげればいいです。
終了
0 件のコメント:
コメントを投稿