2016-05-03 18 views
2

Hallo Ich bin neu in Elektron und ich bin mit einem Problem konfrontiert, ich möchte einen Befehl auf die Schaltfläche klicken, für die ich einen child_process von Knoten verwenden. Ich habe einen Code für app.on ('ready') geschrieben und es funktioniert gut. Aber ich brauche es auf unten klicken mein Code bitte helfen ..Electron - Call-Funktion aus Sicht

function runExec() { 
child_process.exec('pwd', function(error, stdout, stderr){ 
    if(!error){ 
    console.log(stdout); 
    setTimeout(function(){ 
    child_process.exec('ls -la', function(error, stdout, stderr){ 
     console.log(stdout); 
    }); 
    }, 3000); 
    } 
}); 
} 

ich mit jquery diese Funktion auf Klick ausgeführt werden soll/index.html HTML-Code ist hier:

<div class="col-sm-12 controls"> 
    <a id="btn-login" href="#" class="btn btn-success btnLogin">Login </a> 
</div> 

Wie ich eine API auf Klick auf Login-Button am schlagen und bekommt Antwort & ich diese Funktion auch auf gleichem Klick oder wahre Antwort .. nennen will

Jede Idee ..

danke im voraus :)

Antwort

4

Also, es funktioniert in Ihrem Hauptprozess, aber Sie möchten es auslösen, wenn jemand auf eine Schaltfläche in Ihrem Renderer-Prozess klickt?

Sie müssen die Funktionalität in Ihren Hauptprozess exportieren und dann das Modul remote von Electron verwenden, um es in Ihren Rendererprozess zu ziehen.

In Ihrem Hauptprozess, fügen Sie den folgenden Code ein:

exports.runExec = runExec; 

Dies wird exportieren Sie Ihre runExec Funktion als runExec auf dem remote Objekt, wenn Sie es importieren.

nun in Ihrem Renderer Code (I Ihre Hauptdatei main.js gehe davon aus aufgerufen wird, aber es könnte noch etwas anderes genannt werden, was völlig in Ordnung ist, ersetzen Sie einfach ./main mit dem, was der Name der Datei ist auf der zweiten Zeile) :

var electron = require('electron'); 
var runExec = electron.remote.require('./main').runExec; 

var loginButton = document.querySelector('. btnLogin'); 

loginButton.addEventListener('click', function() { 
    runExec(); 
}); 

remote Modul fungiert als Proxy für den Hauptprozess des Electron. Wenn also jemand auf die Schaltfläche "Login" klickt, wird der Rendererprozess die runExec-Funktion vom Hauptprozess auslösen.

+0

Ja, diese Funktion funktioniert gut, wenn ich es in app.on ('bereit') Ereignis –

+0

Steve ich habe "exports.runExec = runExec;" Zeile in main.js und Rest der Code ist in HTML-Datei eingefügt, aber es wirft mir einen Fehler "Uncaught TypeError: Kann Eigenschaft 'addEventListener' von Null nicht lesen und funktioniert auch nicht :( –

+0

Ich habe es getan :) danke für Ihre Hilfe tat ich mit Hilfe von "ipc" –