For what it's worth, after some digging I'm pretty sure it's an expected behavior of webkit rather than a bug.
Vimium simulates a click by firing a series of synthesized events her: https://github.com/philc/vimium/blob/master/lib/dom_utils.js#L341. The way that it opens a link into a new tab is by setting metaKey to true for the mouse click event, like clicking a link while pressing the meta key, which will open the link in a new tab. However, on a webkit-based browser like Safari or Orion, while I can't find an official documentation about it, I believe it's intentional that the browser will reject creating a new tab this way. It's likely for a valid security reason.
For example,
- Go to https://example.com
- Run
document.querySelector('a').dispatchEvent( new MouseEvent( 'click', { bubbles: true, cancelable: true, composed: true, view: window, detail: 1, metaKey: true } ) );
- The link will be opened in a new tab.
However, doing the same in Safari or Orion will open the link in the same tab.
I've created a workaround diff as a GH gist if anyone is interested. Here is how:
- Clone https://github.com/philc/vimium somewhere
- Apply the diff
- Run
make.js inside your vimium directory. You will need to install deno beforehand if you haven't.
- Go to Orion's extension management screen.
- Click "Install extension" and pick "Install from disk"
- Choose the
dist/chrome-store directory inside your vimium directory.