2012-06-21 20 views
6

El javascript está imprimiendo la HTML en el ejemplo siguiente página, es posible llamar a una función C en él, por ejemplo, en C para convertir algo a otro idioma no es una función LANG_Str("text") que convierte el texto en el idioma especificado. ¿Sería posible usar esta función en el siguiente texto dentro de Javascript ?.llamar a funciones C dentro Javascript

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

EDIT:

básicamente estoy con ganas de hacer una traducción de la lengua humana. El sitio ya es compatible con varios idiomas, el problema está en la pantalla personalizada como la que se muestra arriba que se genera en Javascript, no puede usar la función utilizada para traducir texto como se hace normalmente en C.

+0

¿Desde dentro de un navegador web? No. – Pointy

+0

¿Cómo se genera esta cadena? Si lo estás generando a partir de 'C', entonces sí, puedes hacerlo. Si lo está generando desde JavaScript, entonces no. –

+0

¿Necesita implementar el i18n de su aplicación? Definitivamente debe hacerse de otra manera ... –

Respuesta

5

Si se está ejecutando el navegador: no. Lo siento.

Es posible que pueda hacerlo de antemano en el código del lado del servidor (por ejemplo, Python o PHP que puede llamar a C) al armar el contenido de la página. Alternativamente, puede realizar una solicitud AJAX a un servidor que expone la función C como API API/Endpoint (vía, GCI, FCGI o Python/PHP/Perl). Pero no en el navegador.

Esto se debe a que el JS se ejecuta en un entorno virtual de espacio aislado que no tiene acceso a las llamadas al sistema ni nada fuera del tiempo de ejecución.

EDITAR

En respuesta a su comentario "El guión se corrieron en el C utilizando HTML_WriteToCgi", esto sugiere que usted está preparando el código HTML en C en su servidor. Si esto es correcto, vaya a mi opción 1 anterior, inyectando los valores directamente en el código fuente de JS si todos los valores provienen de algunos datos conocidos por el servidor.

Puede que desee eliminar alguna funcionalidad del navegador JS y volver al código del lado del servidor para solucionar su problema.

+0

¿Sería una buena idea mover todo el código JS y en su lugar solo WriteToCgi el código javascript ?, esto debería permitirme llamar a la función dentro. – ahmet

+0

Eso es ciertamente posible, sí. Alternativamente, si llama a una función de localización en JS y conoce todos los valores que se usarán, puede crear un mapa de JavaScript de cadenas para los valores traducidos y simular la entrada/salida de la función C. – Joe

+1

Esta respuesta no es del todo correcta: es posible [compilar C en JavaScript del lado del cliente] (http://faantasticcoder.blogspot.com/2013/05/calling-c-function-from-javascript-in.html) usando EngScripten. –

2

JavaScript no puede acceder a ningún otro proceso directamente, pero puede hacer una solicitud de servidor para la información. El servidor puede llamar a una función C si es necesario.

Al final, no es JavaScript llamando a la función C, es el servidor (y cualquier idioma que esté usando: Python, PHP, ASP.NET, JSP, etc.) que estaría llamando a la función C.

2

Puede hacer una solicitud especial, por lo que el servidor web puede usar esa solicitud y enviarla a la página web.

+1

Por favor, ponga un poco de esfuerzo en su respuesta. –

0

Puede considerar crear un RESTful web service en su servidor que recibirá el texto de origen y el ID del idioma de destino, y luego devolver el texto traducido. A continuación, puede acceder desde su página web a través de ajax call.

0

Mi interpretación es que su objetivo es llamar a una función C dentro de HTML/Javascript y capturar la salida.

Lo que puedes hacer es crear una VM. Básicamente, tiene una gran "memoria" de matriz, un par de "registros", etc. La parte más difícil es asegurarse de que el conjunto de instrucciones y los códigos de byte de su máquina virtual reflejen un conjunto común de instrucciones de que hay un compilador de C para. Usted compila el código C de esa máquina virtual en su computadora, la guarda en un archivo y la ejecuta en la máquina virtual.Si hacerlo es demasiado difícil, puede obtener un convertidor de C a ensamblador, y simplemente definir un par de instrucciones de ensamblaje. Hay un Linux emulator en javascript puro sin llamadas al servidor que hace precisamente eso.

Cuestiones relacionadas