Reputation: 49
I want to thanks those who are currently reading this and for your time. Let's go straight to the topic!
I am currently trying to disable a feature where a user should not be able to open a link to a new window or tab by holding down on a link.
Any suggestions or answers to approach this problem is appreciated, Thanks again!
Upvotes: 4
Views: 12180
Reputation: 69
CSS:
a{
color: blue;
cursor: pointer;
text-decoration: underline;
}
Script:
var links = document.getElementsByTagName("a");
for(var i=0; i < links.length; i++){
links[i].setAttribute("data-href", links[i].getAttribute("href"));
links[i].removeAttribute("href");
links[i].onclick = function(){
window.location = this.getAttribute("data-href");
};
}
Upvotes: 0
Reputation: 3240
You could bind an event handler to the desired link element and use jQuery's .preventDefault()
method to cancel the link going anywhere. Your code would look something like this:
$('a').click(function(event){
event.preventDefault();
});
Upvotes: 6
Reputation: 183251
If you need to prevent the user from opening links in a separate tab or window, then there's probably something wrong with your site design. Why do you feel that this restriction is necessary?
But to answer your question -- one way to more or less guarantee this, without depending on JavaScript and/or browser quirks, and without breaking too many any other important browser features, is to have each "link" actually be a form-button: <form method="GET" action="http://example.com/..."><input type="submit" value="click here for more information" class="pseudo-link-input" /></form>
, with lots of CSS styling to make the button look like a link.
Caveats:
<input type="hidden" .../>
elements. (And this requires that the query strings be of the type that can be constructed by an HTML form.)Upvotes: 3
Reputation: 10655
You'd probably want to use some JavaScript to load the new contents into the existing page. But that will mean that your site will not have any history (unless you add it in manually), so it will break navigation, and then there's no guarantee that the user will just copy and paste the URL into a new window or tab anyway.
In essence if you need to disable a fundamental Operating System (yes, for websites the Browser is the Operating System) action then you're doing something wrong. (In your design or intended behaviour.)
Upvotes: 0