Is there a way to create a link using JavaScript that acts exactly like an <a>
tag? In other words, when you click it normally, it opens in the current window and when you right click, it shows "Open link in a new tab" under options. And if you click it, it does open in a new tab.
I am not interested in solutions that add an <a>
tag into the html, because the main reason I am asking this is that I need to apply this link to a <tr>
element.
Edit: Please consider that this needs to work with keyboard shorcuts (such as cmd+click on a mac) as well as right click and "Open in new tab"
Is there a way to create a link using JavaScript that acts exactly like an <a>
tag? In other words, when you click it normally, it opens in the current window and when you right click, it shows "Open link in a new tab" under options. And if you click it, it does open in a new tab.
I am not interested in solutions that add an <a>
tag into the html, because the main reason I am asking this is that I need to apply this link to a <tr>
element.
Edit: Please consider that this needs to work with keyboard shorcuts (such as cmd+click on a mac) as well as right click and "Open in new tab"
Share Improve this question asked Oct 23, 2014 at 14:10 Marco PrinsMarco Prins 7,41913 gold badges48 silver badges79 bronze badges 3- 1 stackoverflow./questions/18476373/… – Mischa Commented Oct 23, 2014 at 14:15
-
3
If you need standard context menu I pretty sure that this is impossible. If you want to implement custom context menu it's possible to open url via
window.open('http://...', '_blank')
and for usual click check if Cmd was pressed. – Pavel Birukov Commented Oct 23, 2014 at 14:25 -
True, but you can use the
keyCode
in your JavaScript function to either open in_blank
or just dodocument.location.href
. – Mischa Commented Oct 23, 2014 at 14:33
2 Answers
Reset to default 13Use window.open(url, '_blank')
to open it a new target window
First of all, there's no way to have Javascript function exactly like an HTML a tag. Still, you can emulate it. There might be better solutions out there, but what I'd research is how to emulate each of those actions of clicking on a link.
You'll want to handle...
Cursor change (hover, active, current, etc.)
Determine if you want to re-direct or run javascript/JQuery.
If you opt for a redirect, you don't have to handle as much else (just #4 below). The browser will do the redirect and it will be like clicking on an HTML a tag.
If you want to run code, then you'll have to handle more. This includes...
Adding history to the browser, to help when the user initiates the back mand. In and HTML5-enabled this is relatively easy. In HTML4, you'll want to use JQuery or something else.
Adding mechanics for right-click, etc. You'll have to emulate that. This part is a royal pain, because now you're trying to interfere/replace with the browser operations.
So if you're up for that, more power to you. However I'd strongly remend adding an tag into the of your and then setting the a link to go nowhere (either "" or "#") and adding "onclick" to that tag to run javascript. Fortunately onclick works with the keyboard too for tags, not just a mouse click (http://websiteaccessibility.donaldevans./2011/06/30/when-does-onclick-work-with-the-keyboard-enter-key/)