2013-03-22 11 views
7

Sto scrivendo un'applicazione Web utilizzando il framework Express per generare presentazioni Impress.js e applicare un editor visuale su di essi. Ho impostato il app.js per ottenere solo il file .html ma voglio iniettare un codice javascript da un file separato prima del tag di chiusura del corpo del file .html.Inserire codice javascript in html con Express

Ad esempio, avrò un gestore di route /edit e quindi lo script verrà attivato dopo essere stato iniettato nel codice html.

var express = require('express'); 

var app = express(); 


app.configure(function(){ 
    app.use(express.static(__dirname + '/public')); 
}); 

app.get('/:file', function(req, res) { 
    res.sendfile(__dirname + '/public' + file); 
}); 

app.listen(3000); 
console.log('Listening on port 3000'); 

Qualsiasi idea su come ottenere questo sarebbe più che benvenuto!

risposta

8

Solo un'idea, ma si potrebbe usare qualcosa come cheerio per aggiungere uno script per il corpo

app.get('/:file', function(req, res) { 
    var html = fs.readFileSync(__dirname + '/public' + file, 'utf8'); 
    var $ = cheerio.load(html); 
    var scriptNode = '<script>alert("script appended!");</script>'; 
    $('body').append(scriptNode); 
    res.send($.html()); 
}); 
+0

Funziona! Ma ora qualsiasi altro script già incorporato nel .html non viene eseguito. Come posso ripararlo? Grazie. – giokokos

+0

cosa vuoi dire che non sono stati eseguiti? li ha rimossi? c'è stato un errore? per favore dettagli –

+0

quando faccio console.log ($. html()); Posso vedere le sceneggiature, ad es. nel codice HTML ma non vengono attivati ​​come il nodo di script aggiunto. Non ho avuto questo problema con il codice che ho nella descrizione. – giokokos

Problemi correlati