从node-webkit打开外部锚点链接

时间:2014-12-14 23:11:10

标签: node.js dart node-webkit

我正在与Dart进行游戏,我用node-webkit和node-webkit.dart(用于node-webkit模块的Dart包装器)打包它。

我的目标是让node-webkit应用程序游戏显示为独立的本机应用程序。为了达到这个目的,我剥去了导航栏和其他一些东西。我的所有资产都是本地的,游戏永远不必连接到互联网。

我的HTML中有一些锚链接(以我的网站为例)。当我单击它们时,我的node-webkit窗口会在其自身内打开链接。除了这个从未成为我的计划之外,自从我拿走导航栏以来,没有办法重返游戏。

所以我的问题是:是否可以创建一个外部打开锚链接的处理程序(在用户选择的浏览器中)?请记住,可以动态添加锚链接。

我知道Shell.openExternal(url),但我无法想办法让每个锚链接都能调用它。

谢谢!

1 个答案:

答案 0 :(得分:2)

事实证明,有一个node-webkit事件来处理链接,但node-webkit.dart似乎不支持它。

为了解决我的问题,我在我的主HTML文件中添加了一个内联JS脚本:

<script type="text/javascript">
  try {
    var gui = require('nw.gui');
    var win = gui.Window.get();
    win.on('new-win-policy', function (frame, url, policy) {
        gui.Shell.openExternal(url);
        policy.ignore();
    });
  } catch(e) { }
</script>

(空的try / catch就在那里,因为当我的游戏在节点环境之外运行时会抛出错误。)