3月13日 Safari5.1.4上线后,原本工程里Token检查的地方出错了,极度郁闷了一会儿。
从Log出力的情况来看,画面上保存的Token和服务器保存的值不一样,用的标签是最基本的<html:form>标签,没有道理不一样呀。
调查了很久也没有查出原因,加上由于刚上线的关系,也没有很多回馈信息。
自己做了一个测试后发现Safari5.1.4以后使用<body onload="form.submit">的地方都回出现相同的错误。
<html> <head> <script type="text/javascript"> function test(){ document.aa.action = "b.html"; document.aa.submit(); } </script> </head> <body onload="test();"> test1 <form name="aa" action="test.jp" method="POST"> <input type="hidden" name="token" value="tokenaaaaaaaaaaaaaaaaaa"> </form> </body> </html>
<html> <head> <script type="text/javascript"> function test(){ alert(document.getElementsByTagName('input')[0].value); } </script> </head> <body onload="test()"> test2 <form name="aa" action="test.jp" method="POST"> <input type="hidden" name="token" value="tokenbbbbbbbbbbbbbbbbbbbbb" /> </form> </body> </html>
执行a.html的时候,在IE和Safari5.1.4前,alert出来的信息是tokenbbbbbbbbbbbbbbbbbbbbb
但,在5.1.4上alert出来的信息是tokenaaaaaaaaaaaaaaaaaa
我怀疑,Safari5.1.4上使用onload来提交的时候,后画面显示时优先使用了前画面的Hidden值,无视了从后台过来的新值,就出现了上面的现象。
这到底是BUG呢,还是新的式样。。。有待Apple官方回答了
另外3月26日更新的Safari5.1.5,满怀希望的做了相同的测试,结果很残念!!!