在一个很多代码的程序里出现过类似如下的问题(这里我就核心内容举了个例子):
———————–test.html———————————–
<form id="f" action="" method="get" >
<input type="submit">
</form>
<script>
function check(){
alert("mmm");
return false;
}
document.getElementById("f").onsubmit=check;
(function (){
var footer = ‘<hr><div>’;
footer += ‘<a href="http://sina.com.cn">sina</a> ’;
footer += ‘<a href=http://163.com>163</a> ’;
footer += ‘</div>’;
document.body.innerHTML += footer;
})();
</script>
—————————————————————————-
就这段代码,在ie中点击按钮,有弹出的alert;在firfox中就没有弹出的alert;
经测试,问题就出在document.body.innerHTML上,不知道为什么;
做如下修改就可以了:
——————————test2.html——————————-
<form id="f" action="" method="get" >
<input type="submit">
</form>
<script>
function check(){
alert("mmm");
return false;
}
document.getElementById("f").onsubmit=check;
(function (){
var footer = ”;
footer += ‘<a href="http://sina.com.cn/">sina</a> ’;
footer += ‘<a href="http://163.com/">163</a> ’;
var div = document.createElement("div");
div.innerHTML = footer;
document.body.appendChild(div);
})();
</script>
————————————————————————–
我在这里写这篇日志,不完全是想说明这个问题;因为我在很长的代码中猜测、尝试了很多种办法,但怎么也没想到在这里出现了问题;最终还是通过使用二分法来删除一些无关的代码来缩小问题出现的范围才发现了,我一直很强调也很重视这种方法,但使用的时候总是根据经验做一些无谓的尝试,所以我在这里再一次提醒自己,也提醒同行们,调试代码时一定要重视二分法的使用。