问题描述
由于NPAPI插件将在Chrome中弃用(可能在Firefox中过早),并且是基于NPAPI插件的项目(WebChimera)的一部分。我一直在考虑在浏览器中保持NPAPI支持的不同解决方案。 (因为将此插件移植到NaCL目前是不可能的,但该插件可以在目前支持NPAPI的node-webkit的冻结版本中使用)
所以我想知道浏览器页面是否有可能在用户的PC上打开node-webkit应用程序,然后使用带有/不带jQuery的JS来发送有关Node-webkit的html元素的数据窗口(总是在顶部设置)应该是应用程序(可能通过websocket)始终将它放在那里。
我知道我可以获得一个html元素的大小,在JavaScript中的位置,我也知道我可以跟踪用户的滚动和浏览器选项卡的更改,以对窗口大小,位置和可见性进行必要的更改。
问题
真正阻止我尝试这一点的是我怎么知道什么时候浏览器不是全屏,如果它不是全屏,我怎么知道浏览器在屏幕上的位置? JS或直接从node-webkit。另一件值得关注的事情是屏幕是浏览器窗口。
我是唯一一个想过使用node-webkit进行此类努力的人,是否有任何开源项目试图这样做?
对此的任何想法或意见将不胜感激,因为解决方案不仅可以在不久的将来节省NPAPI插件,还可以打开一个世界,其中Node-Webkit也可以用作构建浏览器插件的可行解决方案太。 :)
答案 0 :(得分:2)
这将涉及许多痛苦的hackery。您必须独立地在所有平台上解决大多数这些问题,并依赖于大量实现细节。
作为一种可能的替代方案,请查看支持插件的plans for FireBreath 2.0,这些插件可以通过名为FireWyrm的新协议通过NPAPI,ActiveX和Native Messaging加载。目前,使用FireWyrm界面时不支持绘图,仅支持Native Messaging。此外它还没有完成,虽然我越来越近了=]
答案 1 :(得分:1)
现在可以使用libvlc直接在NW.js / Electron页面上播放视频:https://www.npmjs.com/package/webchimera.js
这个项目是什么:它是低级别(用C ++编写)插件,它使用libvlc并允许将视频帧解码为JS ArrayBuffer对象。反过来,可以直接在HTML5画布上或使用WebGL绘制此ArrayBuffer对象。该项目直接使用Node.js / V8 API而根本不使用NPAPI,因此即使在NPAPI弃用之后也会存在。另一个好处 - 性能(特别是如果使用WebGL)与原始VLC播放器性能相当。