2017-01-05 3 views
1

Salut, j'ai une application en utilisant NW.JS et angularjs. Mais le problème est, je veux ouvrir une nouvelle fenêtre (qui charge une nouvelle page à partir de l'application) sans hériter la barre de menu du menu de la fenêtre principale. Est-ce possible dans nwjs? Aussi chaque fois que je clique sur l'élément du menu de la fenêtre principale menubar qui déclenche l'ouverture d'une nouvelle fenêtre, il ouvre toujours une nouvelle fenêtre. Comment puis-je empêcher cela? Je veux dire, quand j'ouvre déjà la nouvelle fenêtre, l'application devrait s'abstenir de l'ouvrir à nouveau, à moins qu'elle ne soit déjà fermée.Ouvrir une nouvelle fenêtre dans NW.js sans menubar

dans mon 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

I Je travaille avec une ancienne version de nwjs, mais je pense que vous avez des options sur la création de la fenêtre. focus, barre d'outils et cadre, vous pouvez les définir à false. – Trader

+0

J'ai essayé mais la barre d'outils est déjà obsolète. – sse

+0

dans quel système d'exploitation vous rencontrez ce problème? –

Répondre

0

Lors de l'ouverture nouvelle fenêtre vous utilisez même fichier html qui contient le code pour créer la barre de menu, donc il va évidemment créer barre de menu pour la fenêtre pop-up aussi, vous avez besoin utiliser un fichier html différent pour la fenêtre contextuelle.

est inférieure à la version complète du code, laissez-moi savoir si cela ne fonctionne pas pour vous

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

Celui-ci est correct. Mais cela n'a pas résolu mon deuxième problème concernant la nouvelle fenêtre. Disons par exemple que l'utilisateur clique sur le menu "Nouvelle page", et le fichier home.html est chargé. Mais chaque fois que l'utilisateur clique à nouveau sur le nouveau menu de la page, il ouvre une nouvelle fenêtre. Donc, cela signifie qu'il peut avoir une nouvelle fenêtre pratiquement infinie du même home.html tant que l'utilisateur clique sur le menu. Comment puis-je empêcher cela? Donc, si le fichier home.html est chargé, même l'utilisateur cliquera sur le nouveau menu de la page, il n'ouvrira jamais de nouvelle fenêtre à moins que le fichier home.html ne soit toujours ouvert. – sse

+0

ou existe-t-il une solution de contournement pour cela? comme dans 1 fenêtre (principale) il peut y avoir une fenêtre enfant dedans? Je veux dire que l'enfant ne devrait pas être créé dans une fenêtre séparée, il sera juste chargé le long de la fenêtre principale? – sse

+0

@sse J'ai mis à jour index.html, s'il vous plaît vérifier si elle résout votre problème –