首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zombie.js和写入窗口的脚本

Zombie.js和写入窗口的脚本
EN

Stack Overflow用户
提问于 2012-11-05 19:22:49
回答 1查看 1.1K关注 0票数 1

我在使用Zombie.js和评估脚本时遇到了一些麻烦,这些脚本为window变量编写了一些东西。这里有一个例子来说明我的意思:

假设我有一个脚本foo.js,它执行以下操作:

window.foo = 'foo';

然后使用foo.js访问以下html页面(包括zombie.js):

代码语言:javascript
复制
<!DOCTYPE html>

 <html>
 <head>
   <title>zombiejs test </title>
   <script type="text/javascript" src="foo.js"></script>
 </head>
 <body>
    <script type="text/javascript">
      console.log(window.foo);
    </script>
 </body>
 </html>

在执行window.foo之后,我会假设页面的其余部分可以使用foo.js变量,但是运行时似乎不是这样的:

Browser.visit('http://localhost:8087/test.html')

给我undefined

有什么特别的原因吗?还是我做错了什么?Zombie.js是否将脚本计算到不同的上下文中,而这个上下文与运行页面的上下文不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-05 20:58:21

这对我来说没什么意义,但我会试一试的。您试过在普通浏览器中运行这个程序并查看它是否在那里工作吗?如果是的话,它可能是zombie.js中的一个bug,您应该在其github问题中将其归档。

简单地浏览一下这些问题,我看到了一些已经打开的与窗口对象相关的内容,也许值得一看。例如,https://github.com/assaf/zombie/pull/360

话虽如此,虽然我对这个问题没有一个直接的答案,但我有两个建议可以帮助你解决这个问题。

  • 在页面脚本中使用文档就绪处理程序,在外部脚本中使用可调用函数。所以在foo.js中,它应该是这样的: window.foo_value = function(){返回'foo‘};

在你的页面脚本里,就像这样

代码语言:javascript
复制
<script>
  window.onload(function(){ console.log(window.foo_value) });
</script>

..。不能保证这会有效,但如果不这样做,肯定是zombie.js中的一个bug,您可以将其作为一个问题提交,并希望得到解决。

  • 使用PhantomJS,它做同样的事情,并且更受欢迎:)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13238889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档