2016-09-19 8 views
2

私はNW.js v0.12.3を新しいNW.js v0.17.3に移行しています。 私の古いアプリでは、着信通知を表示するためにウィンドウを開いていました。ユーザーが電話やハングアップに応答した場合、私は特別なイベントリスナーに基づいてウィンドウを閉じました。NW.jsが新しいウィンドウを開いてイベントを閉じます

var notificationWin; 

window.onload = function() { 

    var messageHandler = function(event) { 
     if(event.data.key == 'incomingCall'){ 
      win.requestAttention(1); 

      notificationWin = gui.Window.open('notification.html', { 
       frame: false, 
       toolbar: false,   
       focus: true, 
       icon: "app/imgs/traywinaz.png", 
       title:"Incoming Call" 
      }); 

      notificationWin.on ('loaded', function(){ 
        .... 
      }); 

     }else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled'){ 
      notificationWin.close(); 
     } 
    } 

    window.addEventListener('message', messageHandler, false); 
} 

しかし、新しいバージョンでは、私は拒否やイベントに答え呼び出しでウィンドウを閉じカント:

これは私のコードウィッヒは、v0.12.3で問題なく動作しますです。私はそれを閉じるために通知ウィンドウを得ることができません。

私の新しいコードは次のようになります。

var messageHandler = function(event) { 
    if(event.data.key == 'incomingCall'){ 
     win.requestAttention(1); 

     nw.Window.open('app/notification.html', { 
      frame: false,  
      focus: true, 
      icon: "app/imgs/traywinaz.png", 
      id: "callNotification" 
     }, function(new_notification) { 

      new_notification.setAlwaysOnTop(true); 
      new_notification.setVisibleOnAllWorkspaces(true); 

      new_notification.on ('loaded', function(){ 
       .... 
      }); 
     }); 

    }else if(event.data.key == 'callRejected' || event.data.key == 'callAnswered' || event.data.key == 'callCanceled'){ 
     try{ 
     notificationWin = nw.Window.get('app/notification.html'); 
     notificationWin.close(); 
     }catch(e){ 
     console.log(e); 
     } 
    } 
}; 

私もコールバックの内側に、このような気にいらを実行しようとしましたので、私は、コールバック内でウィンドウを取得することができます:

notificationWin = new_notification; 

が、これに近いです私のメインウィンドウ:S

私が間違ってやっていることのアイデアやこれをどうしたらいいですか?

ドキュメントhttp://docs.nwjs.io/en/latest/References/Window/#windowgetwindow_objectは、Window.get([window_object])と言っていますが、新しいバージョンで[window_object]パラメータを取得する方法はわかりません。

ありがとうございます! :)

答えて

0

これに戻って、コールバック内に参照を保存することで解決しました。 "notificationWin = new_notification;"その後、単にnotificationWin.close()を呼び出します。

私はこれを初めて試みましたが、メインウィンドウを閉じましたが、現在動作します:)

関連する問題