重新加载已加载的插件

时间:2012-03-10 07:12:57

标签: firebreath

我按照这里找到的指示:

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”?

第二个问题:除了重新启动浏览器之外,还有另一种手动重新加载插件的方法吗?

1 个答案:

答案 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)您可以崩溃插件并重新加载页面。有利于发展,但没有别的。在生产中使用它将直接送你到地狱。