I am using Vue2 and I have <a>
tag with href='#'
and @click.prevent="someMethod()"
.
This is working as expected in a situation when do a left click (it is calling a method), but if I do a right click -> open in new tab
, in that case it is opening href
value, which is wrong.
Which approach do you suggest in order to also call a @click.prevent="someMethod()"
when opening from non-left click situations?
CodePudding user response:
If you're looking to control the behavior for all clicks, then you'll need to add more than one click event handler.
Something like this. Here's a working JSFiddle of the code.
<a
href="#"
@click.prevent="someMethod()"
@auxclick.prevent="someMethod()"
@contextmenu.prevent
>
Click Me
</a>
</div>
@click.prevent
handles left click events.
@auxclick.prevent
handles auxclick events (i.e. non-left click events).
@contextmenu.prevent
disables the context menu that pops up when you right click on the element.
CodePudding user response:
You cannot override the native context menu Open in New Tab behavior; it will always open the anchor's href in a new tab.
Your only options are:
- Prevent the context menu from being shown with
@contextmenu.prevent
. Not good UX. - Prevent the context menu but instead show your own custom context menu with an Open in New Tab item which you can handle yourself.
- Use a
<button>
. This was my first thought since you don't really need an anchor here anyway because there's no real link.