2017-09-06 2 views
-1

J'ai donc ce code nightmarejs que je voudrais exécuter (ouvrir une nouvelle fenêtre et exécuter le script) lorsque vous cliquez sur un bouton dans une application électronique. Cependant, je cherchai à travers l'Internet et rien ne fonctionnait pour moi:/(J'ai un mac)Exécutez js script cauchemar dans l'application électronique

var Nightmare = require('nightmare'); 
 
var nightmare = Nightmare({ 
 
    electronPath: require('${__dirname}/node_modules/electron'), 
 
    show: true 
 
}); 
 

 
nightmare 
 
    .goto('http://yahoo.com') 
 
    .type('form[action*="/search"] [name=p]', 'github nightmare') 
 
    .click('form[action*="/search"] [type=submit]') 
 
    .wait('#main') 
 
    .evaluate(function() { 
 
    return document.querySelector('#main .searchCenterMiddle li a').href 
 
    }) 
 
    .end() 
 
    .then(function (result) { 
 
    document.getElementById("results").innerHTML = result; 
 
    }) 
 
    .catch(function (error) { 
 
    console.error('Search failed:', error); 
 
    });

const electron = require('electron') 
 
const app = electron.app 
 
const BrowserWindow = electron.BrowserWindow 
 
let mainWindow; 
 

 
function createWindow() { 
 
    mainWindow = new BrowserWindow({ 
 
     title: "Dummy", 
 
     fullscreenable: false, 
 
     resizable: false, 
 
     alwaysOnTop: false, 
 
     width: 420, 
 
     height: 250, 
 
     'web-preferences': { 
 
      'web-security': false 
 
     } 
 
    }) 
 
    mainWindow.loadURL(`file://${__dirname}/index.html`) 
 
    mainWindow.on('closed', function() { 
 
     mainWindow = null 
 
    }) 
 
} 
 

 
app.on('ready', createWindow) 
 
app.on('window-all-closed', function() { 
 
    if (process.platform !== 'darwin') { 
 
     app.quit() 
 
    } 
 
}) 
 
app.on('activate', function() { 
 
    if (mainWindow === null) { 
 
     createWindow() 
 
    } 
 
})

Merci, Bertram

+0

Quel est le code que vous utilisez pour tirer le script/ouvrir la fenêtre? – theGleep

+0

@theGleep Je viens de l'ajouter merci. –

Répondre

0

I ne vois rien qui déclenchera le code que vous voulez exécuter.

Si vous me l'avez donnée de faire le travail, je ferais deux choses:

  • Enroulez le code cauchemar dans une fonction afin que vous puissiez

    require (» ./ mynighmare.js ") .sleepPoorly()

  • Dans votre index.html, ajoutez un bouton qui appelle la ligne ci-dessus pour exécuter votre code.

... je ferais tout un tas de tests, parce que mon premier projet ne fonctionnerait pas droit :)

+0

OMG merci cela a fonctionné! Cependant, savez-vous un moyen d'ouvrir le script cauchemar dans une nouvelle fenêtre merci! –

+0

Pour * cela * J'aurais une autre page html ("nightmare.html"?) Qui fait le require() ...() pendant l'événement onload. Ensuite, le clic sur le bouton ouvrirait un nouveau BrowserWindow de la même manière qu'avec CreateWindow(). Faites-moi savoir si ce n'est pas assez clair. – theGleep