2016-03-18 5 views
-1

Wie kann ich eine Nachricht vom Rendererprozess (Webseite) zum Hauptprozess (Knoten) in Nightmare senden? Es gibtin Electron und Nightmare ist auf der Spitze von Electron gebaut, also nehme ich an, dass es möglich ist, aber ich kann nicht herausfinden, wie.Nachricht vom Rendererprozess zum Knotenprozess mit Nightmare senden

So etwas:

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'); 
}); 
+0

Könnten Sie mehr Hintergrundinformationen dazu liefern, was Sie zu tun versuchen? – Ross

+0

@Ross Ich möchte die Seite laden, die Nachricht an Node-Prozess von Javascript schreiben kann und ich weiß nicht, wie diese js aussehen sollte. –

+0

Ich hätte konkreter sein sollen: Könnten Sie Beispielcode bereitstellen, der zeigt, was Sie zu tun versuchen? – Ross

Antwort

1

Wenn Sie Daten zu erhalten, von der Seite sind versuchen, warum nicht .evaluate() benutzen? Etwas wie:

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

um Ihre ursprünglichen Beispiel, Sie können nicht willkürlich Ereignisse senden, bis Plugins dürfen auf Albtraum bis auf die Elektronen Instanz es umschließt. Es gab eine Diskussion über das Hinzufügen von zufälligen Ereignissen zu Nightmare's Kern in Nightmare #354, die ich in Nightmare #367 beheben wollte. Es wurde festgestellt, dass das Hinzufügen beliebiger Ereignisse ein Plugin unter #425 sein sollte. Das Plugin PR wurde nicht akzeptiert, aber das Plugin für die Plugin-Gabel is already completed.