在javascript中调用C函数

时间:2012-06-21 13:10:59

标签: javascript html c translation

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

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

修改

我基本上想要做一个人类语言翻译。该网站已经支持多语言,问题是如上所示在Javascript中生成的自定义屏幕上的问题,不能使用用于翻译文本的功能在C中正常完成。

5 个答案:

答案 0 :(得分:7)

如果它在浏览器中运行:没有。遗憾。

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

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

修改

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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