Javascript 浏览器嗅探漏洞/错误行为的替代方案(不缺少功能)

Javascript 浏览器嗅探漏洞/错误行为的替代方案(不缺少功能),javascript,jquery,browser-detection,Javascript,Jquery,Browser Detection,好的,我们都知道。我不想在这里重复整个辩论,所以这不是一个合适的论坛。我正在寻找一个解决方案,以解决一个问题,建议替代的特征检测似乎没有解决 在我的特殊情况下,它是由如下代码触发的: <form name="something" method="POST"> <input name="input1"><input name="input2"> <!-- etc --> <input id="mysubmit" type="

好的,我们都知道。我不想在这里重复整个辩论,所以这不是一个合适的论坛。我正在寻找一个解决方案,以解决一个问题,建议替代的特征检测似乎没有解决

在我的特殊情况下,它是由如下代码触发的:

<form name="something" method="POST">
     <input name="input1"><input name="input2"> <!-- etc -->
     <input id="mysubmit" type="submit" value="Submit me">
</form>

<!-- during jquery initialization -->

$('#mysubmit').click(function() {
   sendAjaxRequestInsteadOfRealForm($('#input1').val(), $('#input2').val());
   return false;
});

$('#mysubmit')。单击(函数(){
sendajaxrequests代替alform($('input1').val(),$('input2').val());
返回false;
});
现在,我知道真正的答案是“不要使用jQuery绑定使用
input type=“submit”
”(我想除了
submit
)。但是,这段代码在我们所有“官方”支持的浏览器上都像预期的那样工作,只有当我们有一个用户碰巧在IE7中尝试该站点时,这才成为一个问题(即,它绕过了绑定,以老式的方式提交了表单)

我们不在IE7上测试。因此,我们尝试在首页上使用浏览器检测,并警告那些用户代理指出其浏览器不受支持的用户。我不喜欢这样做,但我不清楚替代方案是什么。我想不出一种特性检测策略可以检测“允许在提交按钮上单击绑定以替换实际提交”。这里最好的方法是什么


编辑以澄清:我不是在要求上述代码的替代方案。我知道它们是什么。我想问的是,我应该如何检测出上面的代码有问题,这样它就不会进入生产环境,而不必在IE 7中实际测试它。

劫持默认按钮事件

$('#mysubmit').click(function() {
    event.preventDefault();  // don't let the click event happen
    sendAjaxRequestInsteadOfRealForm($('#input1').val(), $('#input2').val());
    return false;
});     

这里不是JQuery专家,但是你不能将处理程序绑定到表单的onsubmit事件而不是onclick按钮吗?@Pointy-Modernizr看起来是一个非常好的解决方案,可以检测JQuery没有的特性和功能。很好的建议@“尖尖的现代化”看起来很有趣,我会深入研究,但你能简要解释一下为什么它在这里有用吗?@missingno是的,那也会有用,在过去我会这么做,而且会很好。对于这种情况,我不知道为什么代码是以这种方式编写的。同样,我明白这不是一个推荐的做法,但关键是我们测试的所有新浏览器都按需要处理它。因为类似的事情将来可能会再次出现,我试图理解是什么能帮助我确定这是一个问题。