Создание приложения для Windows со встроенным браузером и JavaScript - PullRequest
5 голосов
/ 03 марта 2011

Я создал сайт PHP / JavaScript для клиента.Затем они попросили меня воспроизвести его, кроме как отдельное приложение для Mac.Я сделал это с помощью приложения, которое объединяло встроенный веб-сервер, PHP и «WebView» - версию веб-браузера WebKit на какао-версии, которую я могу встроить в стандартное окно приложения.Все это работало замечательно - мне пришлось повторно использовать более 10 000 строк PHP / JS-кода, что сэкономило месяцы на повторной реализации всего этого заново в «родном» коде.

Теперь им нужен эквивалент Windows.Я достаточно уверен, что смогу заставить PHP и веб-сервер работать.И я знаю, что встроить базовую функциональность IE довольно просто.

Однако ... в моей настройке Mac WebView (с помощью windowScriptObject) дал мне возможность вызывать методы JavaScript из C ++.Например, я мог бы вызвать метод JavaScript из C ++ для обновления экрана.Точно так же я мог бы настроить все так, чтобы вызов JavaScript в браузере мог вызвать метод C ++ - я использовал это, например, чтобы позволить пользователю щелкнуть «BROWSE» и выбрать путь к файлу, используя настоящий стандартный файловый браузер.

Итак, мой вопрос: есть ли встроенная настройка браузера на базе Windows, которая позволила бы мне взаимодействовать с JavaScript таким же образом?

(интерфейс JavaScript <-> WebKit описан гораздо лучшеподробно здесь: http://lipidity.com/apple/javascript-cocoa-webkit/)

Ответы [ 5 ]

4 голосов
/ 03 марта 2011

Возможно, попробуйте использовать что-то вроде Appcelerator Titanium, чтобы вы были готовы, когда ваш клиент скажет, что хочет, чтобы он работал на Linux, iPhone или Android.

Цитата Википедия : «Appcelerator Titanium - это платформа для разработки мобильных и настольных приложения, использующие веб-технологии. [...] Поддержка основанной на стандартах сети технологии: HTML, CSS и Javascript на всех платформах вместе с PHP, Python и Ruby для настольных платформ. Интегрированная поддержка популярных JavaScript и AJAX-фреймворки в том числе jQuery, YUI, MooTools, Скриптакул и другие. "

Звучит как идеальный инструмент для работы.

3 голосов
/ 03 марта 2011

Когда вы встраиваете элемент управления Web Browser (IE), код вашего приложения может просто вызывать execScript (http://msdn.microsoft.com/en-us/library/ms536420(v=vs.85).aspx) для объекта window. Вы можете сделать так, чтобы ваш скрипт вызывал приложение, используя объект window.external из сценария.и используя ObjectForScripting (или эквивалент C ++) из приложения.

1 голос
/ 03 марта 2011

возможно, Qt подойдет для вашего случая, также у вас есть QtScript и вы можете добавить javascript с помощью valuJavaScript

0 голосов
/ 23 июня 2012

В целях полноты я хотел бы упомянуть мой порт Windows WebKit, который включает в себя различные межуровневые функции WebKit на Mac.

Я опубликовал пример кода , показывающий, как встроить WebKit в собственное приложение WinAPI, в комплекте с примерами JavaScript-> C ++ и C ++ -> JavaScript.

Пример представляет собой крошечный тестовый пример для гораздо более крупного приложения, использующего встроенные WebView для основных компонентов пользовательского интерфейса. Я могу подтвердить, что то, что вы делаете, не только возможно, но и является отличным способом создания приложения.

0 голосов
/ 07 марта 2011

В Интернете я нашел отличный пример для вызова JS в моем встроенном браузере из C ... в основном с использованием методов COM-ish, которые позволяют получить DISPID из объекта сценария, а затем с помощью метода Invoke () с этим,Это прекрасно работает.

Но оказывается, что мне нужно также вызывать функции C ++ из моего JS-кода.Кажется, это возможно, и после нескольких часов возни я думаю, что у меня это почти получилось - это похоже на описанное выше в обратном порядке - вы создаете COM-объект, затем подключаете его к объекту скрипта браузера - но в конце концов я не смог закрытьсделка - я продолжал получать ошибки "библиотека не зарегистрирована".Честно говоря, я недостаточно хорошо знаю COM, чтобы сделать это правильно.

Итак, я, черт возьми, попытался создать свое первое приложение на C #.Примерно через 20 минут у меня было приложение, запущенное с браузером, где я мог как вызывать JS внутри него, так и браузер вызывать методы C #.Geesh.После этого опыта я верю в .NET и не верю в технологии Microsoft 90-х годов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...