javascript - 在 Nightmare 中获取加载的SCRIPT变量

标签 javascript nightmare

我想在 Nightmare 中使用script.js时从加载的.evaluate()中获取值。因此,假设某些网站上有此基本html ...

<!doctype html>
<head>
<title> far-away-website.com</title>
    <script src="script.js"></script>
 <script src="script-two.js"></script>
</head>

<body>
  <div> DOM stuff</div>
</body>
</html>

而且script.js拥有这个...
​func.prototype.hasData = function() {
                return this.data
            }

如何在Nightmarejs中从this.data中获取.evaluate()的值?...
var Nightmare = require('nightmare');
var nightmare = Nightmare({
    // waitTimeout: 60000, // in ms
    openDevTools: {
        //mode: 'detach'
    },
    show: true
})
nightmare.goto('https://www.far-away-website.com')

    .evaluate(() => {
            return this.data // needed from script.js
    })

.then((data) => {
console.log(data)
})

P.S. chromet工具中的this.data可以显示watch的值。

最佳答案

以下代码仅显示this仅引用该对象。如果该对象在全局窗口中,则可以通过创建对象并使用.hasData()函数属性来访问它。

否则,您将无法访问this.data,因为它处于不同的功能范围内。您可以阅读一些 Material ,以了解更多有关如何利用它的信息。

另外,您没有共享一个真正有效的网站/代码,没有它就无法提供太多帮助。

进一步了解herehere
阅读更多关于范围here的信息。

关于javascript - 在 Nightmare 中获取加载的SCRIPT变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47139385/

相关文章:

javascript - 如何在另一个 Javascript 中实现 Bootstrap Datepicker?

javascript - 使用 jQuery 在 Chrome 中更改图像不会加载

kubernetes - 在 Kubernetes 集群中运行 E2E 测试

node.js - Nightmare/Electron ,如何根据元素是否存在进行不同的操作?

javascript - 如何使用 Nightmare.js 将文本输入到具有相同类的两个元素中

javascript - ng-repeat 中的输入附加函数

javascript - 传单 : icon based on data source

javascript - 向下滚动加载数据以进行 Bootstrap 模式(延迟加载)

node.js - 是否可以使用 Nightmare.js (v2 Electron) 将信息从浏览器传递到 Node 作用域?

javascript - Nightmare Js 评估页面