javascript - 防止在 ctrl+click for location.href 时打开新选项卡
问题描述
我有一个带有以下代码的 Javascript 函数。
function NodeClickActions(sender, eventArgs) {
event.preventDefault();
//Get whether user clicked CTRL key or not
var bCtrlPressed = eventArgs.get_browserEvent().ctrlKey;
//URL of the actions page
var URL = "../Actions.aspx";
//If CTRL key was pressed
if (bCtrlPressed) {
parent.MainPage.location.href = URL + "?PackageId=00000000-0000-0000-0000-000000000000&All=" + bCtrlPressed;
}
else {
parent.MainPage.location.href = URL;
}
}
我需要停止在新选项卡中打开页面。请注意,event.PreventDefault(); 不幸的是,不会成功。
我知道这是由于浏览器行为而不是代码造成的。欢迎任何建议。问候!
解决方案
这是最简单的方法,防止点击 url 比阻止按下 CTRL/CMD 按钮更智能,因为 CTRL/CMD + CLICK 等功能是浏览器功能,不能被覆盖(或者至少我没有成功它)...
$(document).ready(function(){
$("a").click(function(e){
e.preventDefault();
window.location.href = $(this).attr("href");
});
});
取决于您将使用的情况,您需要为表单提交应用类似的东西......因为这也受到此浏览器功能的影响
重要提示:使用 Command + Click 的 OS X 用户,永远不要忘记
另外: 因为您想在绑定“单击”下禁用在新选项卡/窗口中打开功能,只需对 contextmenu 执行 preventDefaults (鼠标右键)
$("a").contextmenu(function(e){
e.preventDefault();
});
推荐阅读
- performance - Haskell 中具有 rank-2 多态性的令人费解的性能/输出行为
- python - 类型错误:不支持 Unicode 字符串,请编码为字节:'ÿ'
- java - IntelliJ 无法识别 Maven 导入的依赖项?
- javascript - 必须提供返回 dcs.source 或 dcs.c2stream 中的非空文档列表的 Carrot2
- c# - 从另一个类库中的 ViewModel 关闭窗口
- linux - 如何用双引号在前两行末尾添加属性
- ag-grid - 没有企业版可以使用ag-grid的老树数据吗?
- python - 具有整数序列的 Keras 示例单词级模型给出了 `expected ndim=3, found ndim=4`
- php - 为什么这种重定向在 Laravel 中不起作用?
- php - 使用 PHP/Jquery 显示从 Mysql db 到 Html5 引导程序的值