javascript - 如何才能只在系统浏览器而不是 NW.js 浏览器窗口中打开*某些*链接?

标签 javascript hyperlink node-webkit

我在 NW.js 中做了一个东西。默认情况下,用户可以单击的任何超链接都会在新的 NW.js 浏览器窗口中打开。

我正在尝试让其中的一些(不是全部或没有!)在系统浏览器中打开。重要的是这些是 <a>元素;不是 JavaScript 函数调用。

阅读本页:https://nwjs.readthedocs.io/en/latest/References/Window/#event-new-win-policy-frame-url-policy

...我能够使所有超链接在系统浏览器中打开。但我只想要这个一些。我想指定一个属性什么的,比如<a some-attribute="open-in-system-browser"...>可以在代码中检查:

nw.Window.get().on('new-win-policy', function(frame, url, policy)
{
    policy.ignore();
    nw.Shell.openExternal(url);
});

我错过了什么?如果可以避免的话,我不想“解析 url”来确定这一点,因为它又丑又乱。 “框架”和“策略”看起来都是无用的参数。

最佳答案

您不需要做任何特殊的事情,默认情况下它就是这样工作的。除非您明确告诉它在默认浏览器中打开,否则所有内容都会直接在 NW.js 中打开。

有很多方法可以做到这一点,但一个简单的例子是

<div>
  <a href="about.html">About</a>
  <a href="thing.html">Thing</a>
  <a href="https://example.com" data-external-link>Example</a>
  <a href="https://stackoverflow.com" data-external-link>Stackoverflow</a>
</div>

普通 JS

// Find all elements on the page
var externalLinks = document.querySelectorAll('[data-external-link]');
// Convert the node list to an array
externalLinks = Array.from(externalLinks);
// loop over each link
externalLinks.forEach(function (link) {
  // add a click event listener to each link
  link.addEventListener('click', function (evt) {
    // Do not navigate to the link in NW.js
    evt.preventDefault();
    // get the URl for the clicked link
    var url = evt.currentTarget.href;
    // Open the url in the default browser
    nw.Shell.openExternal(url);
  });
});

或 jQuery 版本

$('[data-external-link]').click(function (evt) {
  evt.preventDefault();
  nw.Shell.openExternal(evt.currentTarget.href);
});

关于javascript - 如何才能只在系统浏览器而不是 NW.js 浏览器窗口中打开*某些*链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70251609/

相关文章:

javascript - Onclick按钮输入不起作用

html - 在标签标签中使用超链接( anchor 标签)是标准的吗?

html - 更改 MediaWiki 导航面板中的链接颜色

javascript - 在 node-webkit 中打印没有 "print dialogue"

node.js - Node-Webkit Facebook 集成

image - 使用 node.js 跨平台调整图像大小

javascript - 删除动态添加的复选框和相应的图像

javascript - 函数 Memo 对于不同的参数应该给出不同的结果

image - 当我将 URL 从网站粘贴到 Facebook 或 slack 等时,如何显示图像

javascript - less(版本 2.5.3)与 Rhino(或 Nashorn)