使用脚本方法调用卸载NPAPI插件

使用脚本方法调用卸载NPAPI插件,npapi,browser-plugin,Npapi,Browser Plugin,我有适用于Mac Safari/fire Fox浏览器的NPAPI插件。这些插件有几种方法,我可以从java脚本中调用。我想知道是否可以通过其中的实现方法关闭或卸载插件。我需要此函数从浏览器/内存中卸载插件。简短回答:否 更长的回答是:不太可能。您可以做的是从DOM中删除对象标记,这将导致卸载该实例。它不保证浏览器会卸载模块,但它至少会让实例脱离您的视线 大多数想这样做的人都试图找到一种不关闭浏览器就更新插件的方法;您可以这样做,但是您需要使用与旧插件不同的文件名安装新插件。我说的是.plugi

我有适用于Mac Safari/fire Fox浏览器的NPAPI插件。这些插件有几种方法,我可以从java脚本中调用。我想知道是否可以通过其中的实现方法关闭或卸载插件。我需要此函数从浏览器/内存中卸载插件。

简短回答:否

更长的回答是:不太可能。您可以做的是从DOM中删除对象标记,这将导致卸载该实例。它不保证浏览器会卸载模块,但它至少会让实例脱离您的视线

大多数想这样做的人都试图找到一种不关闭浏览器就更新插件的方法;您可以这样做,但是您需要使用与旧插件不同的文件名安装新插件。我说的是.plugin/bundle的文件名,而不是其中的二进制文件


如果您在
~/internetplugins/MyPlugin-1.0.0.0
中有一个插件,您删除了它,并在
~/internetplugins/myplugins-1.0.0.1
中添加了一个新插件,然后在javascript中调用
navigator.Plugins.refresh(false)浏览器会找到新插件,当你实例化它时,它会给你新版本。但是,包的名称必须不同;这是关键。

你不能期望用户从文件夹中删除插件。如果我在网站中使用的插件和很多用户正在使用它,请考虑更大的角度。为什么用户需要从文件夹中删除插件?我没有说你需要保留旧的,只是说新的需要有一个不同的名称,否则浏览器将检测不到它。在Mac OS上,你完全可以在旧插件仍在使用时删除它——一旦它不再使用,它就会被实际删除,但与此同时,对于尚未访问它的每个人来说,它都会被删除。