html - 如何防止浏览器打开href中指定的链接?

jan*_*gxx 12 html javascript href

我目前正在制作文件浏览器.如果用户点击文件的链接,打开一个小窗口并询问选项(如下载和查看).我使用onclick属性完成了这个.如果我点击链接,则执行javascript,但在此之后,href中指定的url会打开.我要做的是:如果你点击链接javascript得到执行,并最终转发你.但是,如果链接被右键单击,则"复制链接位置"仍应可用.我正在考虑通过阻止转发脚本来解决这个问题.因此,如果链接被右键单击,则不会执行javascript,您可以复制链接位置.但是,如果您单击链接,则执行javascript并且不会打开链接.这可能与JavaScript,或有没有任何其他方式来实现这种行为?

Arm*_*tus 16

为了防止链接执行,一种方法是让"onclick"方法返回false.

例如:

<a href="http://..." onclick="return clickfunc()">...</a>
Run Code Online (Sandbox Code Playgroud)

如果clickfunc()返回false,点击链接将不会指向"http:// ..."

虽然你可能更喜欢处理它

<a href="http://..." id="somebutton">...</a>
<script>
document.getElementById('somebutton').onclick = function() { 
      ... 
      else { return false; }
};
</script>
Run Code Online (Sandbox Code Playgroud)

  • Javascript!= jQuery.在jQuery中,返回false表示"停止传播并防止默认",但在Javascript中它只是意味着"停止传播"(这不会停止默认的链接点击操作).见http://www.w3.org/TR/DOM-Level-3-Events/#events-event-type-stopImmediatePropagation (4认同)

bob*_*bek 9

您必须阻止点击功能的默认值:

function stopDefAction(evt) {  
  evt.preventDefault();  
} 
Run Code Online (Sandbox Code Playgroud)

  • 这个答案比其他答案更接近正确,但正如我对它们所评论的那样,返回false并不等同于防止原始Javascript中的默认值(它等同于stopPropagation()).所以你对preventDefault的回答是唯一正确的(返回false不会削减它). (2认同)