2012-06-21 3 views
6

The javascript печатает вне HTML на примере страницы ниже, можно назвать C функцию на нем, например, в C преобразовать что-то на другой язык есть функция LANG_Str("text"), которая преобразует текст на указанный язык. Можно ли использовать эту функцию в нижнем тексте внутри Javascript ?.Вызов функций C внутри яваскрипта

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

EDIT:

Я в основном хотел сделать перевод человеческого языка. Сайт уже поддерживает многоязычность, проблема заключается в том, что пользовательский экран, подобный показанному выше, который генерируется в Javascript, не может использовать функцию, используемую для перевода текста, как это обычно делается в C.

+0

С веб-браузера? № – Pointy

+0

Как создается эта строка? Если вы создаете его из 'C', то да, вы можете это сделать. Если вы создаете его из JavaScript, то нет. –

+0

Вам нужно реализовать i18n вашего приложения? Это должно быть сделано по-другому ... –

ответ

5

Если он запущен в браузер: нет. Сожалею.

Возможно, вы сможете сделать это в серверном коде заранее (например, Python или PHP, который может вызывать C) при компоновке содержимого страницы. В качестве альтернативы вы можете сделать запрос AJAX на сервер, который предоставляет функцию C как HTTP API/конечную точку (через, GCI, FCGI или Python/PHP/Perl). Но не в браузере.

Это связано с тем, что JS работает в изолированной виртуальной среде, которая не имеет доступа к системным вызовам или чему-либо вне среды выполнения.

EDIT

В ответ на ваш комментарий «Сценарий побежал в C помощью HTML_WriteToCgi», это говорит о том, что вы ставите вместе HTML в C на сервере. Если это правильно, перейдите к моему варианту 1 выше, введя значения непосредственно в исходный код JS, если все значения выходят из некоторых данных, известных серверу.

Возможно, вам удастся перенести некоторые функции из браузера JS и вернуться к серверному коду, чтобы решить вашу проблему.

+0

. Было бы неплохо переместить все код JS, а вместо этого просто WriteToCgi - код javascript ?, это должно позволить мне вызвать функцию внутри. – ahmet

+0

Это, безусловно, возможно, да. В качестве альтернативы, если вы вызываете функцию локализации в JS и знаете все значения, которые будут использоваться, вы можете построить карту строк JavaScript для перевода значений и имитировать вход/выход функции C. – Joe

+1

Этот ответ не совсем корректен: возможно [скомпилировать C на клиентский JavaScript] (http://faantasticcoder.blogspot.com/2013/05/calling-c-function-from-javascript-in.html) используя EngScripten. –

2

JavaScript не может обращаться к каким-либо другим процессам напрямую, но он может сделать запрос на получение информации о сервере. При необходимости сервер может вызвать функцию C.

В конце концов, это не JavaScript, вызывающий функцию C, это сервер (и любой язык, на котором он используется: Python, PHP, ASP.NET, JSP и т. Д.), Которые будут вызывать функцию C.

2

Вы можете сделать специальный запрос, чтобы веб-сервер мог использовать этот запрос и отправить его на веб-страницу.

+1

Пожалуйста, приложите немного усилий в ответ. –

0

Возможно, вы захотите создать на своем сервере RESTful web service, который получит исходный текст и идентификатор целевого языка, а затем вернет переведенный текст. Затем вы можете получить доступ к нему со своей веб-страницы с помощью ajax call.

0

Мое толкование заключается в том, что ваша цель - вызвать функцию C в HTML/Javascript и захватить вывод.

Что вы можете сделать, это создать виртуальную машину. В принципе, у вас огромный массив «память», пара «регистров» и т. Д. Самая сложная задача - убедиться, что набор команд и байт-коды вашей виртуальной машины зеркалируют некоторый общий набор команд, что есть компилятор C для. Вы скомпилируете код C, который находится на вашем компьютере, сохраните его в файле и запустите его на виртуальной машине.Если это слишком сложно, вы можете просто получить конвертер C в сборку и просто определить пару инструкций Ассамблеи. В чистом javascript есть Linux emulator без серверных вызовов, которые делают именно это.

Смежные вопросы