我按照这里找到的指示:
http://www.firebreath.org/display/documentation/Tips+and+Tricks#TipsandTricks-Reloadingaloadedplugin
这是我为FBTestPlugin添加到FBControl.htm的块:
var myplugin = "<object id=\"plugin0\" type=\"application/x-fbtestplugin\"> </object>";
function onload(){ // You must call this after the page loaded.
document.getElementById('plugin0').innerHTML = myplugin;
}
function reload(){
document.getElementById('plugin0').innerHTML = "";
document.getElementById('plugin0').innerHTML = myplugin;
}
然后在使用chrome刷新页面后,我从JS控制台运行onload()。它返回“undefined”,我知道插件是陈旧的,因为我在最后一次构建之前将getSomeInt更改为另一个整数,并返回旧的。我也尝试在chrome首选项页面中禁用/启用插件,结果相同。
第一个问题:上面的代码块有什么问题?为什么它返回“undefined”?
第二个问题:除了重新启动浏览器之外,还有另一种手动重新加载插件的方法吗?
答案 0 :(得分:2)
1)您滥用了ID 'plugin0'
。页面上写着
var myplugin = "<object id=\"plugin\" type=\"application/x-foobar\"> </object>";
...
document.getElementById('pluginhere').innerHTML = myplugin;
...
<div id="pluginhere"></div>
注意ID,您想将<object>
放入<div>
。
Plus:在致电reload()
功能之前,您需要致电navigator.plugins.refresh(false);
以使浏览器重新加载可用插件列表。
此外:我发现这种重载加载插件的方式效果很好。直到没有。有时(很少)它会顽固地使用旧插件(使用Chrome测试)。我更新了文档以反映这一点。
2)您可以崩溃插件并重新加载页面。有利于发展,但没有别的。在生产中使用它将直接送你到地狱。