我在Mac上有Safari / Firefox的浏览器插件。当用户启动网页时,它会要求用户下载插件。理想情况下,它应该在下载完成后自动刷新页面并使用插件。
代码能够检测到插件,但是当我在插件中调用方法时,它会抛出异常。 如果我手动刷新页面并调用插件方法,我就可以这样做。
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);
}
}
安装页面后应自动刷新 如果手动刷新页面,则代码工作正常。
答案 0 :(得分:0)
我没有看到它刷新页面的位置。应该工作的是重新实例化插件(例如,将其切换到display:none
并返回)。
这看起来好像你可能过早访问插件 - 插件可能还没有完成实例化。
在navigator.plugins
中找到并且(重新)实例化后,您可以:
在这两种情况下,你都希望在“合理”的时间后超时并得出结论
...在MDN上有一个best-practices article。