javascript - 模拟点击 Javascript/jQuery 中的链接产生正常的浏览器行为

标签 javascript jquery click

现在,我有以下代码:

<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 并单击时,这并不能很好地工作,因为浏览器不会打开新选项卡,而只是将 url 加载到当前窗口中。

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

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

最佳答案

将执行此操作的函数(新窗口或选项卡,无法控制)...

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;
    }
});

关于javascript - 模拟点击 Javascript/jQuery 中的链接产生正常的浏览器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169838/

相关文章:

javascript - 延迟 iFrame 加载其 src 直到调用函数?

javascript - float : Get the x axis offset while drawing markings

jquery - 处理只有值的 div

jQuery 绑定(bind)悬停和单击功能

javascript - 将具有不同键的对象数组转换为一个对象

javascript - 如何设置动画状态完成

javascript - Turf.js inside() 方法不会返回 true

javascript - 检查元素的文本是否与另一个元素的文本相同

jquery - 如何在对象列表中通过data-*查找

c++ - 使用 C++/Visual C++ 控制光标和键盘