1

私のFirefoxとGoogle Chromeの拡張機能では、次のようなリンクを中クリックしたときのデフォルトの動作を防ぐことができます:

function onClick(e) {
    var url = getLink(e);
    if (e.button == 1) { // Middle Click
        // prevent opening a link
        e.preventDefault();
        e.stopPropagation();
        // do something with a link
        // url ...
    }
}
if (browser == "chrome")
    document.addEventListener("auxclick", onClick); // for Google Chrome (old "click" event doesn't prevent opening link with middle click but they added "auxclick" for this)
else if (browser == "firefox") 
    document.addEventListener("click", onClick); // for Firefox (still works)

https://developers.google.com/web/updates/2016/10/auxclickhttps://developer.mozilla.org/en-US/docs/Web/Events/auxclick

Microsoft Edge の拡張機能でもこれを実行しようとしていますが、このブラウザーのミドル クリック イベントはまったく機能しないようです。

function onClick(e) {
    var url = getLink(e);
    if (e.button == 1) { // Middle Click
        alert("hello"); // isn't working for Microsoft Edge
    }
}
document.addEventListener("click", onClick);

したがって、これの代わりに Microsoft Edge を使用します。

document.addEventListener("mousedown", function(e) {
    var target = e.target || e.srcElement;
    while (target) {
        if (target instanceof HTMLAnchorElement)
            break;
        target = target.parentNode;
    }
    if (e.button == 1 && target.href != null) {
        alert("hello"); // works when middle click on a link
        // but these preventing doesn't works here:
        e.preventDefault();
        e.stopPropagation();
        // link will still be opened in a new tab
    }
});

ただし、この方法では、中クリック時にリンクが新しいタブで開くのを防ぐことはできません

Microsoft Edge を Google Chrome や Firefox のように動作させるにはどうすればよいですか?

4

1 に答える 1