wol*_*all 5 javascript ajax firefox
注意: Juan Mendes答案是所选的答案,因为它对我的情况最有用。虽然AxGryndr也有一些有用的信息。阅读两个答案,它们对不同情况都有好处。谢谢你们双方的帮助。
我已经在这里问过类似的问题,它确实解决了我的问题的第一部分,但现在我有了另一个问题。我希望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();
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码没有阻止默认行为
function checkkey(e) {
if(e.ctrlKey && e.keyCode == 'N'.charCodeAt(0) && !e.shiftKey && !e.altKey) {
e.preventDefault();
// Now send your AJAX
Run Code Online (Sandbox Code Playgroud)
似乎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("");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在Chrome中(它可能对您没有用,但对于其他阅读此答案的人来说),如果console.log 在处理程序的顶部添加,您将看到该处理程序永远不会得到。因此,Chrome甚至无法让您看到CTRL+N组合,您也无能为力。就像Windows应用程序不会收到通知CTRL+ALT+DEL
如果应用程序必须适用于多个浏览器,我的建议是使用类似的不同组合ALT+SHIFT+N,您实际上不想接管基本的浏览器快捷方式。
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |