从 Web 浏览器调用客户端应用中的调用方法和访问属性

Call method and access properties in a client side app from a web browser

提问人:A. Lop 提问时间:4/8/2017 更新时间:4/12/2017 访问量:132

问:

我们有一个处理 Windows 设备的解决方案,并希望使用 javascript 从 Web 浏览器(Edge、chrome、firefox)调用它的某些组件,因此这将在客户端完成。 我们曾经使用activex来做到这一点,但由于这项技术几乎仅适用于Iexplorer,并且现在现代浏览器被剥夺了,因此不再是一种选择。 我们的解决方案是基于 Java 的,还有一些 C#。

有人知道如何做到这一点吗?多谢。

JavaScript Java 客户端

评论

0赞 TypedSource 4/8/2017
事实是你需要一座桥。这可以是能够访问设备的每种语言。C# C++ Java ....仅浏览器和 JavaScript 无法在后台没有任何类型的 API 直接处理它。要访问 API,您只需使用 AJAX
0赞 A. Lop 4/8/2017
所以在我们使用 activex 的旧方式中,这就是桥梁吗?使用 ActiveX,我们在 Windows 注册表中有一些条目(类),我们所要做的就是在 JavaScript 中引用这些类并进行所需的调用。
0赞 TypedSource 4/8/2017
是的,您在浏览器中使用了ActiveX作为插件,因此这是通往硬件的桥梁。但它已被弃用;)
0赞 A. Lop 4/8/2017
你知道我可以用来向所有现代浏览器公开我的组件的桥接技术吗?
0赞 TypedSource 4/8/2017
stackoverflow.com/questions/31399578/......对不起,使用搜索引擎查找此答案

答:

0赞 Dave 4/8/2017 #1

几乎唯一的方法是创建一个公开组件的 Web 服务,然后从 JavaScript 向该服务发出 Web 请求。这就是任何现代浏览器都允许您做的所有事情。

评论

0赞 A. Lop 4/8/2017
这意味着 Web 服务将托管在我们需要它的每台机器上,对吧?
0赞 Dave 4/11/2017
不,最好的解决方案是拥有单个 Web 服务。
0赞 A. Lop 4/12/2017
但是,由于 Web 服务必须处理连接到每台机器的设备,因此我认为 Web 服务需要安装在每台机器上。
0赞 A. Lop 4/12/2017 #2

我们正在研究另一种似乎可行的选择,使用 websockets 似乎比使用本机消息传递更可靠,因为最后一个过于依赖浏览器版本,并且涉及为至少三个浏览器(edge、chrome 和 firefox)创建扩展,如果这些浏览器中出现某些变化,它可能会破坏扩展。而使用 websockets,这不会发生。

enyone做过类似的事情吗?