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