gpt4 book ai didi

javascript - Zombie.js 和写入窗口的脚本

转载 作者:行者123 更新时间:2023-11-30 13:12:57 25 4
gpt4 key购买 nike

我在使用 Zombie.js 和评估将内容写入 window 变量的脚本时遇到了一些问题。这是一个例子来说明我的意思:

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

window.foo = 'foo';

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

HTML

<!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>

我本以为在执行 foo.js 后,window.foo 变量将可用于页面的其余部分,但运行时情况似乎并非如此:

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

给我 undefined

发生这种情况是否有任何特殊原因,或者我在这里做错了什么? Zombie.js 是否将脚本评估为不同的上下文,该上下文与运行页面的上下文不同?

最佳答案

这对我来说完全没有意义,但我会试一试。您是否尝试过在普通浏览器中运行它并查看它是否在那里工作?如果是这样,则可能是 zombie.js 中的错误,您应该将其提交到 its github issues 中。 .

简要浏览问题,我看到一些已经打开的与窗口对象相关的问题,可能值得浏览这些问题。例如,https://github.com/assaf/zombie/pull/360 .

话虽如此,虽然我没有直接回答这个问题,但我有两个建议可能会帮助您解决这个问题。

  • 在页面脚本中使用文档就绪处理程序,在外部脚本中使用可调用函数。所以在 foo.js 中,它看起来像这样:

    window.foo_value = function(){ return 'foo' };

在你的页面脚本中,像这样

<script>
window.onload(function(){ console.log(window.foo_value) });
</script>

...不能保证这会起作用,但如果它不起作用,那肯定是 zombie.js 中的错误,您可以将其作为问题提交并希望得到修复。

  • 使用PhantomJS , 它做同样的事情并且更受欢迎:)

关于javascript - Zombie.js 和写入窗口的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13238889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com