浏览器如何与Flash播放器或Java小程序交互?

浏览器如何与Flash播放器或Java小程序交互?,java,javascript,html,flash,Java,Javascript,Html,Flash,我一直在试图理解flash动画或Java小程序在浏览器中是如何工作的 我可以想出几个办法- flashplayer/javaapplet是动态链接的机器代码,并且 关于属于它们的屏幕区域的一些参数;在那之后,他们 在相同的进程空间中运行 浏览器公开了一个API,播放器/小程序使用该API与之进行对话,并使其处于活动状态 在一个单独的过程中。(可能他们通过套接字进行通信?)API可能与 openGL/X11/一些自定义调用 这些可能性仍然无法解释按钮点击如何使 播放器全屏播放,如何播放音乐,如何检

我一直在试图理解flash动画或Java小程序在浏览器中是如何工作的

我可以想出几个办法-

  • flashplayer/javaapplet是动态链接的机器代码,并且 关于属于它们的屏幕区域的一些参数;在那之后,他们 在相同的进程空间中运行

  • 浏览器公开了一个API,播放器/小程序使用该API与之进行对话,并使其处于活动状态 在一个单独的过程中。(可能他们通过套接字进行通信?)API可能与 openGL/X11/一些自定义调用

  • 这些可能性仍然无法解释按钮点击如何使 播放器全屏播放,如何播放音乐,如何检查DOM等等, 视频是否通过解码为一系列图像并进行渲染来显示 一次一个,或者是否有更有效的方法,例如,在图像中推动三角洲

    Java小程序上的Wikipedia页() 讨论小程序如何在沙箱中运行(可能是一个单独的进程),但是 它没有说明浏览器和小程序如何通信

    也许答案取决于底层平台

    如有任何关于这一主题的系统性讨论的建议,我们将不胜感激 对API的引用)


    (我对此感兴趣是出于一种永不满足的好奇心。)

    我很确定像Java小程序和Flash这样的插件在大多数浏览器中都可以运行。不久前,我亲自调查了这件事,我发现NPAPI就是答案。

    对于浏览器和Java小程序,小程序通常在Java插件中运行,Java插件作为一个单独的进程运行(例如,您可以在Windows中的任务管理器中看到)

    该插件为DOM中的每个小程序创建一个对象,因此您可以通过Javascript与小程序进行交互。无论如何,对applet的调用需要一段时间才能返回,这确实会冻结浏览器,因此我认为与插件的通信与主刷新循环在同一线程中运行。至少Firefox就是这样