Активный X Управляет JavaScript
-
09-06-2019 - |
Вопрос
Мы с моим коллегой столкнулись с неприятной ситуацией, когда нам приходится использовать активный элемент управления X для управления веб-камерой на странице.
Можно ли назначить обработчик событий javascript кнопке в активном элементе управления x, чтобы она запускала действие на странице при нажатии, или мы должны создать кнопку на самой html-странице, которая манипулирует активным элементом управления X, а затем может запускать любые необходимые действия на странице?
Решение
Пожалуйста просто используйте существующий элемент управления ActiveX.Как Вспышка или Сильверлайт.Flash имеет встроенную поддержку веб-камеры и управляется с помощью JavaScript.Silverlight не имеет встроенной поддержки камеры, но его интеграция с JavaScript просто фантастическая.
Если вы должны написать свой собственный, то не волнуйтесь, заставить его взаимодействовать с JavaScript тривиально.Вам просто нужно разоблачить IDispatch
интерфейс.
Для участия в мероприятиях вам необходимо узнать о Точки подключения.
Другие советы
Да!Вы можете создавать события на C ++ / ActiveX, что заставляет код JavaScript запускать функцию обработчика событий.Я даже смог создать полностью невидимый элемент управления ActiveX (того же цвета, что и фон страницы) без кнопок или визуальной обратной связи, который выполнял всю работу с графическим интерфейсом через JavaScript и CSS.
Редактировать:Совет Фрэнка в самый раз. Вот ссылка на события создания сценариев.
Моя стратегия состояла в том, чтобы вызвать функцию C ++ MyUpdate (которая реализует IConnectionPoint), когда я хотел принудительно обновить браузер.
(Кроме того, я позаботился о том, чтобы передавать сообщения Windows в метод Fire_MyUpdate, потому что иногда код JavaScript вызывал обратный вызов на C ++, вызывая методы в элементе управления ActiveX;это позволяет избежать зависания браузера и гарантирует, что графический интерфейс JavaScript остается отзывчивым, напримердля кнопки Отмены.)
На стороне браузера код JavaScript содержит глобальную переменную, ссылающуюся на объект, за которой следует "::", а затем имя метода:
function Uploader::MyUpdate()
{
// ... code to fetch the current state of various
// properties from the Uploader object and do something with it
// for example check Uploader.IsActive and show or hide an HTML div
}