2011年12月17日土曜日

続・TitaniumのWebViewで変数を渡す

前に、

TitaniumのWebViewで変数を渡す
http://psychedesire.blogspot.com/2011/12/titanium-webview.html

この記事の中で、

var obj = {hoge:"hugahuga"};
var win = Ti.UI.createWindow();
var web = Ti.UI.createWebView({url:"hoge.html"});
win.add(web);
win.addEventListener("open",function(e){
web.evalJS("func(" + JSON.stringify(obj) + ")");
});

こうやって書けば、WebView:web に変数を渡せると書いたけど、
これだと、問題が発生することがわかった。
どんな問題かというと、WebView 内で jQuery とかを読み出していた時に、
jQuery のロードを待たずに変数の代入や関数の実行が行われるのだ。

というわけで、こういう場合は、

var obj = {hoge:"hugahuga"};
var win = Ti.UI.createWindow();
var web = Ti.UI.createWebView({url:"hoge.html"});
win.add(web);
web.addEventListener("load",function(e){
web.evalJS("func(" + JSON.stringify(obj) + ")");
});

このように書けば、WebView:web のロードを待って、
ロードが終わった後に、evalJS が実行される。

0 件のコメント:

コメントを投稿