Node.js zombie.js和谷歌地图API

Node.js zombie.js和谷歌地图API,node.js,mocha.js,zombie.js,Node.js,Mocha.js,Zombie.js,我对zombie.js测试框架和谷歌地图API有问题 我有一个简单的zombie.js,它加载主页并尝试单击登录链接。但是,当我查看主页HTML返回的内容时(从zombie.js浏览器对象的角度来看),我在正文部分只看到以下内容: <body> <script src="https://maps.gstatic.com/intl/en_us/mapfiles/api-3/9/12/main.js" type="text/javascript"></scr

我对zombie.js测试框架和谷歌地图API有问题

我有一个简单的zombie.js,它加载主页并尝试单击登录链接。但是,当我查看主页HTML返回的内容时(从zombie.js浏览器对象的角度来看),我在正文部分只看到以下内容:

<body>
  <script src="https://maps.gstatic.com/intl/en_us/mapfiles/api-3/9/12/main.js"     type="text/javascript"></script>
</body>

我今天遇到了这个问题-您只需要异步加载API。与其说这是一个解决方案,不如说是一个有文档记录的替代方案,您可以在这里阅读:

基本上,您只需更改以下代码:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE" type="text/javascript"></script>
<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map(/* ... */);
  }

  window.onload = initialize();
</script>

函数初始化(){
var map=new google.maps.map(/*…*/);
}
window.onload=初始化();
对此(几乎完全从上面的链接中删除):


函数初始化(){
var map=new google.maps.map(/*…*/);
}
函数loadScript(){
var script=document.createElement(“脚本”);
script.type=“text/javascript”;
script.src=”http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize";
document.body.appendChild(脚本);
}
window.onload=loadScript;
这里需要注意的关键是,您必须将回调参数传递给script.src标记(在本例中,我们提供了初始化,但它可以是您想要的任何内容)-这将允许google在动态注入的maps脚本标记完成加载后触发您的初始化代码

第二种机制修复了我的僵尸测试

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE" type="text/javascript"></script>
<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map(/* ... */);
  }

  window.onload = initialize();
</script>
<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map(/* ... */);
  }

  function loadScript() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize";
    document.body.appendChild(script);
  }

  window.onload = loadScript;
</script>