return false;event.preventDefault 不适用于 1password 自动提交
return false;event.preventDefault not work for 1password auto-submit
我的网站只有ajax登录提交方式,所以当表单直接提交时,它会return一个json数据并刷新page.so我想观察提交事件并将其运行到 ajax 方式,但我无法阻止自动提交,我尝试了很多方法来阻止 1password 自动提交提交,但失败了,所以我尝试获取一些帮帮忙,非常感谢!
javascript
$('form').submit(function(e) {
e.preventDefault();
return false;
});
1密码扩展自动提交代码
var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
a.submit();
return !0;
环境
Mac 专业版 chrome、safari、firefox
问题
扩展程序initEvent允许event.preventDeafault功能,但为什么它不起作用?
为什么扩展中的 initEvent 函数有 5 个参数而不是 3
如何通过 1 个密码扩展名停止自动提交
这是我的第一个问题,如果我有任何错误,请告诉我!如果有任何帮助,我将不胜感激!
添加解决方案
当onsubmit被调用时,使用setTimeout停止提交action.chrome和firefox工作正常,但在safari中,这种方法会卡住页面
setTimeout(function() {
try {
document.execCommand('Stop');
} catch (_error) {
e = _error;
}
try {
return window.stop();
} catch (_error) {
e = _error;
}
}, 0);
1password 扩展会尝试点击提交按钮,所以我只删除了表单动作属性并监听提交按钮的点击事件,效果很好,非常感谢 Arun P强尼的帮助
您可以使用 event.defaultPrevented
检查在调用提交之前是否阻止了默认设置
var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
if (!b.defaultPrevented) {
a.submit();
}
return !0;
在您的情况下,您正在调度一个事件,但这与实际的提交调用无关,以编程方式调用提交也不会触发提交事件。所以你可以做的是通过检查 defaultPrevented
属性来检查默认操作是否被阻止,如上所示。
演示:Fiddle
我的网站只有ajax登录提交方式,所以当表单直接提交时,它会return一个json数据并刷新page.so我想观察提交事件并将其运行到 ajax 方式,但我无法阻止自动提交,我尝试了很多方法来阻止 1password 自动提交提交,但失败了,所以我尝试获取一些帮帮忙,非常感谢!
javascript
$('form').submit(function(e) {
e.preventDefault();
return false;
});
1密码扩展自动提交代码
var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
a.submit();
return !0;
环境
Mac 专业版 chrome、safari、firefox
问题
扩展程序initEvent允许event.preventDeafault功能,但为什么它不起作用?
为什么扩展中的 initEvent 函数有 5 个参数而不是 3
如何通过 1 个密码扩展名停止自动提交
这是我的第一个问题,如果我有任何错误,请告诉我!如果有任何帮助,我将不胜感激!
添加解决方案
当onsubmit被调用时,使用setTimeout停止提交action.chrome和firefox工作正常,但在safari中,这种方法会卡住页面
setTimeout(function() { try { document.execCommand('Stop'); } catch (_error) { e = _error; } try { return window.stop(); } catch (_error) { e = _error; } }, 0);
1password 扩展会尝试点击提交按钮,所以我只删除了表单动作属性并监听提交按钮的点击事件,效果很好,非常感谢 Arun P强尼的帮助
您可以使用 event.defaultPrevented
检查在调用提交之前是否阻止了默认设置var a = document.forms[0];
var b = document.createEvent('UIEvent');
b.initEvent('submit', !0, !0, window, 1);
a.dispatchEvent(b);
if (!b.defaultPrevented) {
a.submit();
}
return !0;
在您的情况下,您正在调度一个事件,但这与实际的提交调用无关,以编程方式调用提交也不会触发提交事件。所以你可以做的是通过检查 defaultPrevented
属性来检查默认操作是否被阻止,如上所示。
演示:Fiddle