今天在客户那里遇到一个奇怪的问题:
页面中定义了
一个按钮:
<input οnclick="send_sms();" type="button" value="获取验证码"/>
onclick事件调用的方法:
function send_sms(){
alert(123);
var flag = false;
...
$.ajax({
type: "POST",
url: "<?php echo lpUrl('pay','send_sms'); ?>",
async:flag,
timeout: 20000,
data: {
phone : phone,o:o,m:m,lfc:lfc,
},
success: function(data)
{
if(data == "-1") {
layer.alert("对不起,操作失败!",8,'提示信息');
} else if(data == '1') {
layer.alert("短信已发送!",9,'提示信息');
}
},
error: function()
{
layer.alert("对不起,操作失败,请稍后再试!",9,'提示信息');
}
});
}
发现在IE/Firefox等浏览器都没有问题,但是在一款客户购买的“Toucher触摸屏浏览器”的浏览器中,alert(123)执行后页面不弹窗,而jquer的ajax提交方法返回success,data的值为data==1。
后来发现和其他正常页面相比,少了属性<meta http-equiv="X-UA-Compatible" content="IE=9" > 。
原来,对于IE8以上的浏览器,增加了 http-equiv="X-UA-Compatible"属性,具体用法:
以上就表明,将IE8和IE7按照IE7标准渲染,但是IE9还是按照IE9的标准渲染。它允许有不同的向后兼容水平。尽管在真实情况中,你只要选择一种版本。
故而推测之前问题出现的原因是浏览器兼容性问题。