我如何才能在系统浏览器而不是 NW.js 浏览器 windows 中只打开 *一些* 链接?
How do I make it so that only *some* links open in the system browser instead of NW.js browser windows?
我在NW.js做了一个东西。默认情况下,用户可以单击的任何超链接都会在新的 NW.js 浏览器 window.
中打开
我正在尝试让 一些(不是全部或 none!)在系统浏览器中打开。重要的是这些是 <a>
个元素;不是 JavaScript 函数调用。
阅读本页:https://nwjs.readthedocs.io/en/latest/References/Window/#event-new-win-policy-frame-url-policy
...我能够做到 所有 超链接在系统浏览器中打开。但我只想要 some 这个。我想指定一个属性什么的,比如<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”来确定这一点,因为它又丑又乱。 “frame”和“policy”似乎都是无用的参数。
您不需要做任何特别的事情,默认情况下它就是这样工作的。一切都直接在 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://whosebug.com" data-external-link>Whosebug</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);
});
我在NW.js做了一个东西。默认情况下,用户可以单击的任何超链接都会在新的 NW.js 浏览器 window.
中打开我正在尝试让 一些(不是全部或 none!)在系统浏览器中打开。重要的是这些是 <a>
个元素;不是 JavaScript 函数调用。
阅读本页:https://nwjs.readthedocs.io/en/latest/References/Window/#event-new-win-policy-frame-url-policy
...我能够做到 所有 超链接在系统浏览器中打开。但我只想要 some 这个。我想指定一个属性什么的,比如<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”来确定这一点,因为它又丑又乱。 “frame”和“policy”似乎都是无用的参数。
您不需要做任何特别的事情,默认情况下它就是这样工作的。一切都直接在 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://whosebug.com" data-external-link>Whosebug</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);
});