【问题标题】:Inject javascript code into html with Express使用 Express 将 javascript 代码注入 html
【发布时间】:2013-03-22 15:40:10
【问题描述】:

我正在使用Express 框架编写一个Web 应用程序来生成Impress.js 演示文稿并在其上应用可视化编辑器。 我已经设置了 app.js 仅用于获取 .html 文件,但我想在 .html 文件的正文结束标记之前从单独的文件中注入 javascript 代码。

例如,我将有一个路由处理程序/edit,然后脚本将在注入到 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');

欢迎任何关于如何实现这一目标的想法!

【问题讨论】:

    标签: javascript html express impress.js


    【解决方案1】:

    只是一个想法,但您可以使用 cheerio 之类的东西将脚本附加到正文

    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());
    });
    

    【讨论】:

    • 有效!但是现在已经嵌入 .html 中的任何其他脚本都不会执行。我该如何解决?谢谢。
    • 你是什么意思他们没有被执行?它删除了它们吗?有错误吗?请详细说明
    • 当我做 console.log($.html());我可以看到脚本,例如。 在 html 中,但它们不像附加的 scriptNode 那样被触发。我在描述中的代码没有这个问题。
    • 如果你说页面加载时脚本没有运行,你需要查看浏览器控制台看看是否有任何客户端js错误
    • 你说得对,我忘了重新配置 express.static 服务器。再次感谢您的帮助!
    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多