8

下面javascript是打印HTML到页面上的示例,是否可以在其上调用C函数,例如C将某些内容转换为另一种语言,有一个函数 LANG_Str("text")可以将文本转换为指定的语言。是否可以在 Javascript 中的以下文本上使用此功能?

"<tr><th>Service</th><th>Target Allocation (%)</th><th></th>"

编辑:

我基本上想做人类语言翻译。该站点已经支持多语言,问题出在上面显示的自定义屏幕上,它是用 Javascript 生成的,不能使用用于翻译文本的函数,就像它在 C 中正常完成的那样。

4

6 回答 6

8

如果它在浏览器中运行:否。对不起。

在将页面内容放在一起时,您可能可以事先在服务器端代码中执行此操作(例如可以调用 C 的 Python 或 PHP)。或者,您可以向将 C 函数公开为 HTTP API/端点(通过 GCI、FCGI 或 Python/PHP/Perl)的服务器发出 AJAX 请求。但不是在浏览器中。

这是因为 JS 在沙盒虚拟环境中运行,无法访问系统调用或运行时之外的任何内容。

编辑

回应您的评论“脚本是在 C 中使用 HTML_WriteToCgi 运行的”,这表明您正在将 C 中的 HTML 放在您的服务器上。如果这是正确的,请选择上面的选项 1,如果所有值都来自服务器已知的某些数据,则将值直接注入 JS 源代码。

您可能会考虑将一些功能从浏览器 JS 中移出并返回到服务器端代码中来解决您的问题。

于 2012-06-21T13:13:15.810 回答
3

您可以提出特殊请求,以便网络服务器可以使用该请求并将其发送到网页。

于 2012-06-21T13:14:36.383 回答
2

JavaScript 不能直接访问任何其他进程,但它可以向服务器发出信息请求。如果需要,服务器可以调用 C 函数。

最后,调用 C 函数的不是 JavaScript,而是调用 C 函数的服务器(以及它使用的任何语言:Python、PHP、ASP.NET、JSP 等)。

于 2012-06-21T13:13:36.300 回答
1

我的解释是,您的目标是在 HTML / Javascript 中调用 C 函数并捕获输出。

你可以做的是制作一个虚拟机。基本上,你有一个巨大的数组“内存”,几个“寄存器”等等......最难的部分是确保它们的指令集和你的 VM 的字节码反映了一些有 C 编译器的常见指令集为了。您在计算机上编译该 VM 的 C 代码,将其保存到文件中,然后在 VM 上运行它。如果这样做太难了,你可以得到一个 C 到汇编的转换器,然后只定义几个汇编指令。有一个纯 javascript 中的Linux 模拟器,没有服务器调用可以做到这一点。

于 2017-09-28T13:16:37.123 回答
0

您可能会考虑在您的服务器上创建一个RESTful Web 服务,该服务将接收源文本和目标语言 ID,然后返回翻译后的文本。然后,您可以通过ajax 调用从您的网页访问它。

于 2012-06-21T13:23:51.420 回答
0

我不是网络开发方面的专家。但是javascript不能使用webassembly调用c吗?虽然不确定它的限制/约束 - 例如内存

像这样的东西? https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm

于 2021-11-08T13:40:21.807 回答