javascript
正在将HTML
打印到下面的网页示例中,是否可以在其上调用C
函数,例如在C
中将某些内容转换为另一种语言有一个函数LANG_Str("text")
,它将文本转换为指定的语言。可以在Javascript里面的下面的文本中使用这个函数吗?
"<tr><th>Service</th><th>Target Allocation (%)</th><th></th>"
修改
我基本上想要做一个人类语言翻译。该网站已经支持多语言,问题是如上所示在Javascript中生成的自定义屏幕上的问题,不能使用用于翻译文本的功能在C中正常完成。
答案 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>