2

メイン ウィンドウから子ウィンドウを作成するときに、JavaScript オブジェクトを渡したいのですが、実際にそれを行う方法があるかどうかわかりません。

TideSDK で作成された 2 つのウィンドウは、2 つのブラウザー ウィンドウと同じように、それぞれ独自の JavaScript 環境を持っているため (私の理解が正しければ、それがまさにそのようなものです)、あるウィンドウの変数に別のウィンドウからアクセスすることはできません。一方、現在のウィンドウから他のウィンドウにアクセスできます (たとえば、 を使用Ti.UI.getOpenWindows)。では・・・何かいい方法はないでしょうか?

可能だと思われる回避策がいくつかありますが、どれもそれほど単純ではなく、それぞれが単純な JavaScript 以外のものを使用しています。

  • Ti.Databaseまたはを使用してTi.Filesystem、渡したいデータを保存し、子ウィンドウから取得します
  • データを新しいウィンドウに GET 変数として渡します。例:Ti.UI.createWindow("app://page.html?data1=test&data2=foobar");
4

2 に答える 2

4

オブジェクトを子ウィンドウオブジェクトに割り当てることができます

var objToBePassed = {foo:'bar'};    
var currentWindow = Ti.UI.currentWindow;
var newWindow = currentWindow.createWindow("app://page.html");
newWindow.obj = objToBePassed;
newWindow.open();

子ウィンドウのJavaScript環境では、次の方法でオブジェクトにアクセスできます

var currentWindow = Ti.UI.currentWindow;
var obj = currentWindow.obj;

もう 1 つの方法は、Ti.API.set を使用することです。

Ti.API.set('objKey', objToBePassed);

そして、どこからでもオブジェクトにアクセスできます

var obj = Ti.API.get('objKey');
于 2013-03-13T08:55:27.943 に答える
0

私はこれが答えられたことを知っていますが、PHPの$ _GET変数を模倣する方法に出くわしました。これは、OPが私が考えていることを実行します。

<script type="text/javascript">
(function(){ 
   document.$_GET = [];
   var urlHalves = String(document.location).split('?');
   if(urlHalves[1]){
      var urlVars = urlHalves[1].split('&');
      for(var i=0; i<=(urlVars.length); i++){
         if(urlVars[i]){
            var urlVarPair = urlVars[i].split('=');
            document.$_GET[urlVarPair[0]] = urlVarPair[1];
         }
      }
   }

})();

</script>

そしてそれを使用します:

<script type="text/javascript">
    var conts = '<li><a  title="back to list" href="/menu.html?module='+document.$_GET['module']+'">Unit Listing</a></li>';
    document.write(conts);
</script>

私のために動作します。

于 2013-03-16T12:29:50.557 に答える