6

现在,我有以下代码:

<script> 
$("#clickme").click(function(){
    $("#clicker").click();
}); 
</script>
<div id="clickme" style="height:20em; width:20em;">
    <a id="clicker" href="http://www.google.com"> Link </a>
</div>

实际上,如果您单击背景 div 上的任意位置,Javascript 将模拟单击实际链接并将您带到目标页面。

但是,当您尝试 ctrl-click 时,这并不能很好地工作,因为浏览器不会打开新选项卡,而只是将 url 加载到当前窗口中。

而不是这种行为,我希望在单击背景时具有正常的浏览器行为(即打开一个新选项卡,不要更改当前窗口以进行 ctrl-click)。有没有办法在 Javascript/jQuery 中做到这一点?

我不想尝试检测被按下的“ctrl”键——有一些类似的情况,我宁愿有一个解决所有问题的解决方案,而不是尝试像这样抓住每一个边缘情况。

4

2 回答 2

2

我知道这不是 javascript,但我认为一个好的解决方案是使用绝对定位的链接并将其设置z-index为负数,以便单击其中的内容div不会转到链接。(除非这不是只需要忽略 z-index)然后单击 div 的背景将像常规链接一样。看到这个小提琴

这是HTML

<div id="clickme"><a id="clicker" href="http://suu.edu"></a><p>text  text</p></div>

和 CSS

#clickme{
  position: relative;
  width: 500px;
  height: 500px;
  border: 1px solid #000;
  z-index: 1;
}

#clicker{
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1;
}

cursor如果您不希望它看起来像div一个链接,您可以使用 css 更改它。

于 2013-01-05T08:24:56.287 回答
2

将执行此操作的功能(新窗口或选项卡,无法控制哪个)...

function open_url(url ) {
    if (flag) {
        window.open(url, '_blank');
        window.focus();
    } else {
        window.location.href = url;
    }
}

当然,您必须捕获Ctrl按键...

$(window).keypress(function(event) {
    if (event.ctrlKey) {
        // set flag
        flag = true;
    } else {
        // unset flag
        flag = false;
    }
});
于 2013-01-05T07:54:53.643 回答