2017-01-05 3 views
1

こんにちは、私はNW.JSとangularjsを使用しているアプリを持っています。しかし問題は、メインウィンドウのメニューからメニューバーを継承することなく、新しいウィンドウ(アプリケーション内から新しいページを読み込む)を開きたいということです。これはnwjsで可能ですか?また、メインウィンドウのメニューバーからメニューアイテムをクリックするたびに、新しいウィンドウが開きます。常に新しいウィンドウが開きます。どうすればこれを防ぐことができますか?つまり、既に新しいウィンドウを開いているときは、既に閉じていない限り、アプリケーションを再度開くことを控えてください。新しいウィンドウを開くときメニューバーなしのNW.jsで新しいウィンドウを開く

私のindex.htmlで

var menu = new nw.Menu({ type: 'menubar' }); 

var submenu = new nw.Menu(); 
submenu.append(new nw.MenuItem({ 
    label: 'Exit', 
    click: function(){ 
     nw.App.quit(); 
    } 
})); 

menu.append(new nw.MenuItem({ 
    label: 'File', 
    submenu: submenu 
})); 
menu.append(new nw.MenuItem({ 
    label: 'New Page', 
    click: function(){ 
     nw.Window.open('index.html#/new_page') 
    } 
})); 

nw.Window.get().menu = menu; 
+0

、コードのフルバージョンです古いバージョンのnwjsで作業していますが、ウィンドウを作成するオプションがあると思います。フォーカス、ツールバー、およびフレームの場合は、それらをfalseに設定できます。 – Trader

+0

私はそれを試みましたが、ツールバーは既に廃止されています。 – sse

+0

どのOSでこの問題が発生していますか? –

答えて

0

メニューバーを作成するコードが含まれている同じhtmlファイルを使用しているので、明らかにまた、ポップアップウィンドウのメニューバーを作成するために起こっている、あなたが必要ですポップアップウィンドウに別のhtmlファイルを使用する。

以下

私はそれがあなたのために働いていないなら、私に知らせて

index.htmlを

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Demo</title> 

    <script type="text/javascript"> 
     //var win = nw.Window.get(); 
     //win.showDevTools(); 

     var menu = new nw.Menu({ type: 'menubar' }); 

     var submenu = new nw.Menu(); 
     submenu.append(new nw.MenuItem({ 
      label: 'Exit', 
      click: function(){ 
       nw.App.quit(); 
      } 
     })); 

     menu.append(new nw.MenuItem({ 
      label: 'File', 
      submenu: submenu 
     })); 
     menu.append(new nw.MenuItem({ 
      label: 'New Page', 
      click: function(){ 
       console.log('open new page'); 
       var parentWin = window; 

       if(parentWin.localStorage.getItem('child_open')) { 
        console.log('child window is already open'); 
        return; 
       } 

       nw.Window.open('home.html#new_page', {}, function(win) { 
        parentWin.localStorage.setItem('child_open', true); 

        win.on('closed', function() { 
         parentWin.localStorage.removeItem('child_open'); 
        }); 
       }); 
      } 
     })); 

     nw.Window.get().menu = menu; 
    </script> 
</head> 
<body> 
</body> 
</html> 

home.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Inner Window</title> 
</head> 
<body> 
    <br /><br /><br /><br /><br /><br /> 
    <br /><br /><br /><br /><br /><br /> 
    <br /><br /><br /><br /><br /><br /> 
    <br /><br /><br /><br /><br /><br /> 
    <p id="new_page"> New page section </p> 
</body> 
</html> 
+0

これは大丈夫です。しかし、それは新しいウィンドウについて私の2番目の問題を解決しませんでした。たとえば、ユーザーが「新しいページ」メニューをクリックし、home.htmlがロードされたとします。しかし、ユーザーが新しいページメニューを再びクリックするたびに、新しいウィンドウが開きます。つまり、ユーザーがメニューをクリックする限り、同じhome.htmlの実質的に無限の新しいウィンドウを持つことができます。どうすればこれを防ぐことができますか?したがって、home.htmlがロードされていても、ユーザーが新しいページメニューをクリックしても、home.htmlがまだ開かれていない限り、新しいウィンドウは開かれません。 – sse

+0

またはこれに対応する回避策がありますか? 1つのウィンドウ(メイン)のように、その中に子ウィンドウを持つことができますか?私は、子供が別のウィンドウで作成されるべきではないことを意味する、それはちょうどメインウィンドウの横にロードされますか? – sse

+0

@sse私はindex.htmlを更新しました。あなたの問題を解決するかどうか確認してください。 –

関連する問題