我在使用Zombie.js和评估脚本时遇到了一些麻烦,这些脚本为window变量编写了一些东西。这里有一个例子来说明我的意思:
假设我有一个脚本foo.js,它执行以下操作:
window.foo = 'foo';
然后使用foo.js访问以下html页面(包括zombie.js):
<!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是否将脚本计算到不同的上下文中,而这个上下文与运行页面的上下文不同?
发布于 2012-11-05 20:58:21
这对我来说没什么意义,但我会试一试的。您试过在普通浏览器中运行这个程序并查看它是否在那里工作吗?如果是的话,它可能是zombie.js中的一个bug,您应该在其github问题中将其归档。
简单地浏览一下这些问题,我看到了一些已经打开的与窗口对象相关的内容,也许值得一看。例如,https://github.com/assaf/zombie/pull/360。
话虽如此,虽然我对这个问题没有一个直接的答案,但我有两个建议可以帮助你解决这个问题。
在你的页面脚本里,就像这样
<script>
window.onload(function(){ console.log(window.foo_value) });
</script>..。不能保证这会有效,但如果不这样做,肯定是zombie.js中的一个bug,您可以将其作为一个问题提交,并希望得到解决。
https://stackoverflow.com/questions/13238889
复制相似问题