Electronのwebviewの`new-window`イベントで取得できるurlが`about:blank`になってしまう
webviewのnew-window
イベントを使って別ウインドウへのリンクをブラウザに飛ばす。
というやつをやりたかったのだが、callbackで得られるurlが about:blank
になってしまって開く先のURLがわからないという問題に遭遇した。
https://github.com/electron/electron/issues/1458
このissueっぽいが治ってない?
issueの一番新しいコメントで言われている方法で解決してみたメモ。
<body onload="onLoad()">
<webview src="https://paper.dropbox.com/"></webview>
</body>
let clientX, clientY
function onLoad() {
const {shell} = require('electron')
const webview = document.querySelector('webview')
window.addEventListener('mousedown', e => {
// mousedownイベント時に座標を保存しておく
clientX = e.clientX;
clientY = e.clientY;
})
webview.addEventListener('dom-ready', () => {
webview.addEventListener('new-window', (e) => {
e.preventDefault();
const bbox = webview.getBoundingClientRect();
const guestPageX = clientX - bbox.left;
const guestPageY = clientY - bbox.top;
// 座標からaタグを取得し、そこからhrefを取得する
const script = 'document.elementFromPoint('+guestPageX+','+guestPageY+')["href"]'
webview.executeJavaScript(
"document.elementFromPoint(".concat(guestPageX, ",", guestPageY, ")['href']"),
false,
(realURL) => {
shell.openExternal(realURL);
}
);
})
})
}
</script>
Author And Source
この問題について(Electronのwebviewの`new-window`イベントで取得できるurlが`about:blank`になってしまう), 我々は、より多くの情報をここで見つけました https://qiita.com/shwld/items/f9a08cc89ebe41c6c64f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .