TweetBot for Mac にある Open Links In Background を Electron で実装したかった。
これはアプリを最前面に維持しつつURLリンクを開く機能で、とりあえずURL開きまくって後でまとめて見たい時に便利。
実装方法としては、shell.openExternal
で URL を開いた直後に window.setAlwaysOnTop(true)
でウィンドウをトップに持って行き、直後window.setAlwaysOnTop(false)
で状態を戻します。
以下コード。(他にいい方法あったら教えてください)
MainProcess
var ipc = require('ipc');
let window = new BrowserWindow({
width: 600,
height: 800,
'always-on-top': false,
});
window.loadUrl(`file://${__dirname}/../index.html`);
ipc.on('pullToTop', () => {
window.setAlwaysOnTop(true);
setTimeout(() => { this.window.setAlwaysOnTop(false) }, 1000); // 1000ms より短すぎるとウィンドウが全面に来なくて微妙...
});
RendererProcess
var ipc = require('ipc');
$(document).on('click', 'a', function() {
shell.openExternal(this.href);
ipc.send('pullToTop');
return false;
});