0

如何在 Nightmare 中将消息从渲染器进程(网页)发送到主进程(节点)?Electron 中有ipc,而 Nightmare 是建立在 Electron 之上的,所以我想这是可能的,但我不知道怎么做。

像这样的东西:

http://example.com

<script type="text/javascript">
 window.postMessage('aaaaaaaa', '*');
</script>

index.js

let nightmare = new Nightmare();
nightmare.on('message', function(e) {
 console.log(e.data); // will output aaaaaaaa
});

nightmare.goto('http://example.com').then(function() {
 console.log('loaded');
});
4

1 回答 1

1

如果您尝试从页面获取数据,为什么不使用.evaluate()? 就像是:

nightmare.goto('http://example.com')
    .evaluate(function(){
        var element = document.querySelector('some-element.query');
        return element.value;
    })
    .then(function(value){
        console.log(value);
    });

对于您的原始示例,您不能发送任意事件,直到 Nightmare 上允许插件向下到它包装的 Electron 实例。在 Nightmare #354中讨论了向 Nightmare 的核心添加任意事件,我试图在 Nightmare #367中修复它。确定添加任意事件应该是#425下的插件。插件 PR 没有被接受,但是插件 fork 的插件已经完成

于 2016-03-23T15:45:07.083 回答