最近在用jsunit来测试js代码。
测试对象中有一个针对iframe的操作。就是通过iframe.contentwindow.location.href属性更新iframe的url。但是每次测试时候,iframe.contentwindow.location.href都是修改以前内容。
开始以为是同源域的情况,无法访问。但是明明是可以访问的啊。
后来又怀疑是cache缓存问题。强行刷新iframe也没用。
自己做了一个例子。
1.html
<html> <head> <script> var iframe = document.getElementById("frameArea"); alert(iframe.src); iframe.contentwindow.location.href="b.html"; alert(iframe.src); alert(iframe.contentwindow.location.href); </script> </head> <body> <iframe id="frameArea" name="frameArea" src="a.html"/> </body> <html>
a.html
<html> <head> </head> <body> AAAAAAAAAAAAAAAAAAAAAA </body> <html>
b.html
<html> <head> </head> <body> BBBBBBBBBBBBBBBBBBBBBBBB </body> <html>
发现只有在页面刷新后,才能显示b.html页面内容。
最后在http://q.cnblogs.com/q/59280/找到结果。
最后,我在测试代码中,将assert判断放到iframe的load事件中就解决了。
原文:http://my.oschina.net/u/133911/blog/513943