首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果设置了window.location.href,节点-webkit不会最小化到托盘。

如果设置了window.location.href,节点-webkit不会最小化到托盘。
EN

Stack Overflow用户
提问于 2017-01-08 04:10:33
回答 2查看 831关注 0票数 4

Windows 7 x64,nwjs 0.19.4

最小化到托盘可以很好地工作而不设置window.location.href,但是当设置nwjs时不会最小化到托盘。

修改后的代码每个请求:

index.html

代码语言:javascript
复制
<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

代码语言:javascript
复制
{
  "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"
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-11 19:09:35

代码的主要问题是,在使用window.location重新加载之后,您将在窗口对象上注册最大化事件,因此您的javascript代码将被删除并回收垃圾。

您需要在每次重新加载之后注入js代码,您可以使用inject_js_startinject_js_end配置package.json,以确保在每次重新加载时都保留脚本。

下面是根据您的要求编写的完整的工作代码

home.html

代码语言:javascript
复制
<!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

代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
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();
}
票数 1
EN

Stack Overflow用户

发布于 2018-11-01 17:33:29

我也有同样的问题。使用webview标记代替iFrame似乎解决了重新加载问题。

https://nwjs.readthedocs.io/en/nw13/References/Frames/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41529379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档