我想感谢那些正在阅读这个和你的时间的人们。我们直接谈谈这个话题吧!
我目前正在尝试停用一项功能,用户无法通过按住链接打开指向新窗口或标签的链接。
感谢任何有关此问题的建议或解答, 再次感谢!
答案 0 :(得分:6)
您可以将事件处理程序绑定到所需的链接元素,并使用jQuery的.preventDefault()
方法取消任何位置的链接。您的代码看起来像这样:
$('a').click(function(event){
event.preventDefault();
});
答案 1 :(得分:3)
如果您需要阻止用户在单独的标签页或窗口中打开链接,那么您的网站设计可能有问题。为什么你觉得这种限制是必要的?
但要回答你的问题 - 一种或多或少保证这一点的方法,不依赖于JavaScript和/或浏览器的怪癖,并且不会破坏太多任何其他重要的浏览器功能,每个“链接”实际上都是一个表单按钮:<form method="GET" action="http://example.com/..."><input type="submit" value="click here for more information" class="pseudo-link-input" /></form>
,有很多CSS样式,使按钮看起来像一个链接。
注意事项:
<input type="hidden" .../>
元素。 (这要求查询字符串属于可以由HTML表单构造的类型。)答案 2 :(得分:1)
CSS:
a{
color: blue;
cursor: pointer;
text-decoration: underline;
}
脚本:
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");
};
}
答案 3 :(得分:0)
您可能希望使用一些JavaScript将新内容加载到现有页面中。但这意味着您的网站将没有任何历史记录(除非您手动添加),因此它会破坏导航,然后无法保证用户只会将URL复制并粘贴到新窗口或标签中。
本质上,如果您需要禁用基本操作系统(是的,对于网站,浏览器是操作系统)操作,那么您做错了。 (在您的设计或预期行为中。)