node.js - 从 node-webkit 打开外部 anchor 链接

标签 node.js dart node-webkit

我正在使用 Dart 制作游戏,并使用 node-webkit 和 node-webkit.dart 对其进行打包。 (node-webkit 模块的 Dart 包装器)。

我的目标是让 node-webkit 应用程序游戏显示为独立的 native 应用程序。为了实现这一目标,我删除了导航栏和其他一些东西。我的所有 Assets 都是本地的,游戏永远不需要连接到互联网。

我的 HTML 中有一些 anchor 链接(例如指向我的网站)。当我当前单击它们时,我的 node-webkit 窗口会打开其内部的链接。除此之外,这从来都不是我的计划,自从我拿走了导航栏后,就没有办法返回游戏了。

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

我知道Shell.openExternal(url),但我想不出一种方法让每个 anchor 链接都调用它。

谢谢!

最佳答案

事实证明,有一个 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 是因为当我的游戏在 Node 环境之外运行时会抛出错误)。

关于node.js - 从 node-webkit 打开外部 anchor 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475222/

相关文章:

node.js - 无法在Docker内部启动 Node 应用程序

node.js - 我应该让 Sequelize 模型和迁移保持同步吗?

javascript - fs.open 无法在 Nodejs 中打开所需的文件

flutter - 如何更改flutter项目名称和id?

javascript - Node webkit : Cut/copy/paste right click context menu and iframe

node.js - 如何更改node-webkit(NW.js)中应用程序的灰色默认工具栏/任务栏颜色(我在Mac上)?

node.js - socket.io Angular 错误: Uncaught TypeError: Cannot call method 'onClose' of null

design-patterns - 用 Dart 模式代替静态继承

dart - 有没有办法在 Flutter 中使用 PageView 实现无限循环?

node-webkit - 为什么我无法退出我的 node-webkit 应用程序