Javascript 如何覆盖默认的alt键+;点击操作?浏览器进行下载,但

Javascript 如何覆盖默认的alt键+;点击操作?浏览器进行下载,但,javascript,google-chrome,browser,keyboard-shortcuts,Javascript,Google Chrome,Browser,Keyboard Shortcuts,通过按alt键并单击url,chrome进行下载。这是因为浏览器默认的alt+单击操作。我怎样才能防止呢?它应该交换url 该代码与浏览器没有默认操作的其他键(例如x==88)一起工作。但是如何使用alt键呢 //ALT键识别 document.onkeydown=函数(){ var keyCode=event.keyCode; if(keyCode==18)//alt键 { 控制台日志(keyCode); document.getElementById(“hist”).setAttribut

通过按alt键并单击url,chrome进行下载。这是因为浏览器默认的alt+单击操作。我怎样才能防止呢?它应该交换url

该代码与浏览器没有默认操作的其他键(例如x==88)一起工作。但是如何使用alt键呢

//ALT键识别
document.onkeydown=函数(){
var keyCode=event.keyCode;
if(keyCode==18)//alt键
{
控制台日志(keyCode);
document.getElementById(“hist”).setAttribute('href',“history_by-date.php?wdate=all”);
}
}

我认为您需要收听链接click events并检查event.altKey属性,而不是听按键。我不是100%的,如果这是防弹vs alt点击下载,但它似乎工作。注意,使用
this.click()
调用链接仅在它是普通href、没有javascript或click事件时才有效。除此之外,还有其他更复杂的方法来完成这一部分

document.querySelectorAll('a').forEach(a=>{
a、 addEventListener('click',函数(e){
如果(如altKey){
e、 preventDefault();//不下载
this.href='history_by-date.php?watchdate=all';
this.click();//假装正常单击
}
});
});

您要求的是更改用户浏览器的默认操作。这是不可能的。浏览器中的默认操作不会在HTML DOM中运行,因此无法检测。

感谢您提供新的视点。在href中,我添加了id=“hist”,并在js中交换了this.Click();使用document.getElementById(“hist”).setAttribute('href',“history_by-date.php?watchdate=all”);在JSFIDLE中,它部分工作,但新url仅在单击后显示。不幸的是,在我的网站上,它没有做出任何反应。它也在下载。但是我会更深入地了解你的观点。不,你不能只在该函数中设置href属性,你必须让浏览器也访问url,或者使用我展示的click()技巧,或者类似于
window.location.href='history\u by-date.php?watchdate=all'
——试试我所做的更改。