6
我使用zombie.js来测试我的客户端JavaScript,但我遇到了一个问题。 Zombie.js不提供同步<script>
标签执行,并且实际上似乎根本不执行外部JS文件。一个基本的测试证实了这一点:
<script type="text/javascript" src="test1.js"></script>
<script type="text/javascript" src="test2.js"></script>
<script type="text/javascript" src="test3.js"></script>
<script type="text/javascript">
console.log("Inline javascript.");
</script>
每个测试#.js文件包含了一行:console.log("TEST#.JS");
当我使这个在普通浏览器,控制台显示的预期:
TEST1.JS
TEST2.JS
TEST3.JS
Inline javascript.
但是当我运行它与zombie.js,我只看到一条线Inline javascript.
这是我试图解决这个问题:
- 使用
document.createElement
到脚本标签动态附加到使用document.write
文档 - 到脚本块使用
setTimeout
结合图1和2添加到HTML - 上
console.log("Inline javascript")
,得到测试脚本一些时间加载。
除了将所有外部JS文件中的JS代码放到一个巨大的<script>
块中之外,有什么办法可以解决这个问题?
你有没有考虑PhantomJS作为僵尸的替代? – Spudley 2012-07-29 21:36:51
是的,我开始使用PhantomJS,但是有一些错误(例如navigator.onLine总是错误的等)让我离开它。 – laker 2012-07-30 14:36:19