注意:Juan Mendes的回答是选择的答案,因为它对我的情况有最有用的回答.虽然AxGryndr也有一些有用的信息.阅读这两个答案,它们都适用于不同的情况.谢谢你们两位帮忙.
我已经问了一个关于这个here的类似问题,它确实解决了我问题的第一部分,现在又有了另一个问题.我希望Ctrl N启动包含AJAX的脚本,但是一旦我运行.get函数,它就会导致默认启动.有谁知道这方面的工作.
function checkkey(e)
{
if(e.ctrlKey && e.keyCode == 'N'.charCodeAt(0) && !e.shiftKey && !e.altKey)
{
try{e.preventDefault();}catch(ex){}
var m_objXMLHttpReqObj = new XMLHttpRequest();
m_objXMLHttpReqObj.open("GET", "", false);
m_objXMLHttpReqObj.send();
}
}
解决方法:
function checkkey(e) {
if(e.ctrlKey && e.keyCode == 'N'.charCodeAt(0) && !e.shiftKey && !e.altKey) {
e.preventDefault();
// Now send your AJAX
似乎AJAX正在干扰停止默认行为的能力.您试图发送同步AJAX请求(不要这样做,它将停止浏览器)并且您没有给它一个URL去(触发错误).一旦您更改设置以正确地为其提供URL并使其异步,那么它在FF中可以正常工作.
这是工作代码
function checkkey(e) {
if(e.ctrlKey && e.keyCode == 'N'.charCodeAt(0) && !e.shiftKey && !e.altKey){
e.preventDefault();
var m_objXMLHttpReqObj = new XMLHttpRequest();
m_objXMLHttpReqObj.open("GET",
// URL to go to
"/echo/html/",
// Asynchronous
true);
m_objXMLHttpReqObj.send("");
}
}
但是,在Chrome中(对你来说可能没有用,但对其他读过这个答案的人来说),if you add a console.log
at the top of your handler,你会发现处理程序永远不会得到.因此,Chrome甚至不会让您看到CTRL N组合,也无法对此做任何事情.就像Windows应用程序没有得到CTRL ALT DEL的通知一样
如果应用程序必须适用于多个浏览器,我的建议是使用不同的组合,如ALT SHIFT N,你真的不想接管基本的浏览器快捷方式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。