通过按住链接禁用“打开新窗口”或“新建选项卡”

时间:2011-10-19 00:16:21

标签: javascript html

我想感谢那些正在阅读这个和你的时间的人们。我们直接谈谈这个话题吧!

我目前正在尝试停用一项功能,用户无法通过按住链接打开指向新窗口或标签的链接。

感谢任何有关此问题的建议或解答, 再次感谢!

4 个答案:

答案 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表单构造的类型。)
  • 从技术上讲,浏览器可以为用户提供在新窗口中打开给定表单结果的选项,但实际上我不知道有什么用。
    • 当然,一旦他们点击了链接,并且页面在他们的历史记录中,他们就可以在他们想要的任何标签/窗口中访问该URL。有些浏览器,比如Firefox,甚至允许用户在新标签中打开“后退”或“前进”,所以这不会花费太多精力。
  • 至少在某些浏览器中,这也会阻止用户选择和复制链接文本。如果他们复制了页面文本,那么所有链接文本都可能会无声地消失。
  • 它可能会导致其他各种问题。 (围绕基本浏览器功能进行攻击从来都不是一个好主意。)上面的警告只是第一个浮现在脑海中的注意事项。

答案 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复制并粘贴到新窗口或标签中。

本质上,如果您需要禁用基本操作系统(是的,对于网站,浏览器是操作系统)操作,那么您做错了。 (在您的设计或预期行为中。)