2017-01-08 4 views
4

Windows 7 x64, nwjs 0.19.4ne minimise pas au plateau si window.location.href est réglé

au plateau fonctionne Minimisez bien sans mise window.location.href, mais quand ensemble nwjs ne minimisera pas au plateau.

Code révisé Par demande:

index.html

<html> 
<body> 
<div></div> 
<script> 

    // Load library 
    var gui = require('nw.gui'); 

    // Reference to window and tray 
    var win = gui.Window.get(); 
    var tray; 

    onload = function() { 
    window.location.href = "http://iheartradio.com" 
    }; 

    // Get the minimize event 
    win.on('minimize', function() { 
    // Hide window 
    win.hide(); 

    var tray = new nw.Tray({ 
     title: 'Web Music Player', 
     icon: 'img/music.png' 
    }); 

    // Show window and remove tray when clicked 
    tray.on('click', function() { 
     win.show(); 
     this.remove(); 
     tray = null; 
    }); 
    }); 


</script> 
</body> 
</html> 

package.json

{ 
    "name": "webmusicplayer", 
    "version": "0.1.0", 
    "main": "index.html", 
    "single-instance": true, 
    "window": { 
    "title": "webmusicplayer", 
    "min_width": 1200, 
    "min_height": 600 
    }, 
    "webkit": { 
    "plugin": true 
    }, 
    "chromium-args": "--load-plugin=ffmpegsumo.dll --child-clean-exit --disable-direct-composition --allow-running-insecure-content --no-proxy-server --enable-video-player-chromecast-support" 
    } 
+0

Si ça continue (http vous donnant des problèmes, vous voudrez peut-être essayer d'utiliser [Electron]: //electron.atom. io /) au lieu de nw.js. Je trouve que c'est moins bogué en général. –

+0

J'ai essayé l'électron mais dans ce cas, l'électron a quelques problèmes avec certains sites web où nwjs ne le fait pas. J'ai essayé divers drapeaux tels que le contenu insécure ect .. en électron mais avais toujours des problèmes. J'ai des nwjs fonctionnant parfaitement à côté du minimum pour le plateau. Je suis sûr qu'il y a un moyen de faire fonctionner ceci – dan

+0

J'essaierais l'option 'window.location.href' plus tard mais je peux * vous suggérer * d'utiliser l'évènement' window.open' tel qu'utilisé comme 'var win = gui .Window.open ('popup.html'); 'étant donné que [** fichier **] (https://github.com/nwjs/nw.js/blob/7267ee3cb006261e6946542ee532db234a754b0f/src/api/window/window .js) dans le ** nœud webktit ** transmet la même fonctionnalité –

Répondre

1

principal problème avec votre code est que vous enregistrez maximiser événement sur l'objet fenêtre après que vous rechargez en utilisant window.location, ainsi votre code javascript sera supprimé et les ordures seront collectées.

Vous devez injecter votre code js après chaque rechargement, vous pouvez utiliser inject_js_start ou inject_js_end config de package.json pour vous assurer de script est conservé sur chaque recharge

est en dessous du travail complet Code selon vos besoins

home.html

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

    <script type="text/javascript"> 
    console.log('redirecting the page'); 
     window.location.href = 'http://www.microsoft.com'; 
    </script> 
</head> 
<body> 
    <p>redirecting the page...</p> 
</body> 
</html> 

package.json

{ 
    "main": "home.html", 
    "name": "tray-demo", 
    "description": "tray demo for windows", 
    "version": "1.0", 
    "inject_js_start": "NWInit.js", 
    "window": { 
    "title": "Tray Demo", 
    "resizable": true, 
    "show_in_taskbar": true 
    }, 
    "webkit": { 
    "plugin": true 
    }, 
    "node-remote": "*://*" 
} 

NWInit.js

if(typeof nw != 'undefined') { 
    NWInit = { 
     initApp: function() { 
      console.log('init app called'); 

      var win = nw.Window.get(); 
      win.showDevTools(); 

      win.on('minimize', function() { 
       console.log('minimize called'); 

       if(typeof nw.Tray == 'undefined') { 
        return; 
       } 

       win.hide(); 

       var tray = new nw.Tray({ 
        title: 'Web Music Player', 
        icon: 'img/music.png' 
       }); 

       tray.on('click', function() { 
        console.log('tray clicked'); 

        win.show(); 

        tray.remove(); 
        tray = null; 
       }); 
      }); 
     } 
    }; 

    NWInit.initApp(); 
} 
+0

J'ai testé votre code et ceci ne minimise pas au plateau. – dan

+0

Je reprends cela, mais ça a fonctionné, c'est "node-remote": "*: // *" dans le package.json. Je n'avais pas réalisé que le commandement était nécessaire. Je vous remercie. – dan

+0

Si j'ajoute un élément de menu, il arrête de minimiser. – dan