【问题标题】:Execute function from Html with nodeJS使用nodeJS从Html执行函数
【发布时间】:2017-05-11 11:09:14
【问题描述】:

我有这个例子,它是一个文件 html:

<html>

My html

<script>
    function Test() {
          alert("yaaaah");
    }
</script>

</html>

我希望 nodeJS 服务器在 /path/here 的文件中执行函数 Test()。

使用 require 不起作用,因为该函数嵌套在 html 中。

如何访问这个函数并从服务器端执行它?

【问题讨论】:

  • 为什么要在前端编写必须由后端执行的函数?
  • 如果您要提取 JS 并运行它,那么它仍然无法工作,因为 alert 是一个浏览器 API,不适用于 Node。这读起来像xyproblem.info,您可能应该解释一下您真正想要实现的目标。
  • @Diego 包含css和js的html文件是用户编写的,为了遵守规范(由我定义),他需要创建他的iframe的函数getHeight(),getWidth()例如. (每个 html 文件都是 iframe,只包含输入)。我需要获取返回函数的值。我不使用 document.windowContent.myFunction() 因为它需要我允许“允许同源”,但为了安全起见我不能。所以我想使用套接字来执行这个函数,获取返回值并将其发送到我的通用页面(父页面)。不知道有没有说清楚,问问题不要犹豫!
  • @Diego 或者如果我可以要求嵌套在 html 中的函数它可以工作,但如何做到这一点?通常它是 require(blablablah.js) 因为它是一个 js 文件。但是如果我想要的功能在 html 文件中呢?不能让 test = require(blablablah.html)。所以我可以做 test.getHeight() 等等...
  • 为什么不在前端做所有事情?

标签: javascript html node.js


【解决方案1】:

我的方法是强制他们在 HTML 中写一个特定的注释,例如:

<!--key 400,500-->

然后您可以读取 HTML 文件并使用 RegExp 提取值:

let html = '<html><!--key 500,23--></html>'

let matches = /<!--key (\d+),(\d+)-->/g.exec(html);
matches.shift();

console.log(matches);

虽然,如果宽度和高度不是静态的,那么它不是一个有效的答案。

【讨论】:

  • 这个特定评论有什么用处?我不明白这个实用程序。是的,它不是静态的。
  • "如果宽度和高度不是静态的" — 这是一个网页。它们不会是静态的。它们会因系统而异。
  • @Quentin 这不是我项目的真正高度和宽度。它将精确地是 min-height、max-height、min-width 和 max-width
  • @Erased 你有没有想过实现两个 socket.io 连接,一个从 iframe 到服务器,另一个从服务器到父级?我无法想象任何其他解决方案。
  • @Diego 然后,在开发人员的 html 文件中,他们需要连接到套接字 IO,等等。这会很复杂,不确定是否可以正常工作。 :// 非常感谢您的宝贵时间,我真的很感激!
猜你喜欢
  • 2012-03-04
  • 2012-03-29
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 2020-07-23
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多