Javascript 安装时未加载NPAPI插件,浏览器插件方法调用失败
我在Mac上有Safari/Firefox浏览器插件。当用户启动网页时,它会要求用户下载插件。理想情况下,下载完成后,它会自动刷新页面并使用插件 代码能够检测插件,但当我调用插件中的方法时,它会引发异常。 如果我手动刷新页面并调用插件方法,我就可以做到这一点Javascript 安装时未加载NPAPI插件,浏览器插件方法调用失败,javascript,macos,npapi,browser-plugin,Javascript,Macos,Npapi,Browser Plugin,我在Mac上有Safari/Firefox浏览器插件。当用户启动网页时,它会要求用户下载插件。理想情况下,下载完成后,它会自动刷新页面并使用插件 代码能够检测插件,但当我调用插件中的方法时,它会引发异常。 如果我手动刷新页面并调用插件方法,我就可以做到这一点 InitPlugin() { var IsPluginInstalled; var plugin = navigator.plugins["My Plug-In"]; // success var engine; if (plugin) {
InitPlugin()
{
var IsPluginInstalled;
var plugin = navigator.plugins["My Plug-In"]; // success
var engine;
if (plugin)
{
engine = plugin.getElementById("MyPlugin");
var version = engine.getAttributeByKey("my_plugin_version"); // crashing here.
IsPluginInstalled = true;
}
}
RefreshPlugin()
{
navigator.plugins.refresh();
if (!InitPlugin())
{
setInterval(InitPlugin,3000);
}
}
安装后,页面应自动刷新
如果刷新页面,这段代码工作正常手动。 我看不出这会在哪里刷新页面。不过,应该重新实例化插件(例如,将其切换到
display:none
并返回)
这看起来也可能是您访问插件的时间太短了-插件可能还没有完成实例化
在navigator.plugins
中找到它并(重新)实例化后,您可以:
- 定期尝试访问它,直到它工作或
- (更好)在页面加载完成后将插件调用放入页面
- 未能加载或删除
- 插件被阻止(插件被设置为单击播放或某个扩展插件被阻止)
。。。MDN上对此有一个解释。:有没有办法通过Java脚本知道是否加载了浏览器插件。如果我知道我可以重新加载页面,你可以通过上面的方法知道它是否在某个时间范围内加载,但你不能确定为什么它没有加载(插件未能实例化,是单击播放,…).