0

我按照此处找到的说明进行操作:

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;
    }

然后在 chromium 中刷新页面后,我从 JS 控制台运行 onload() 。它返回“未定义”,我知道该插件已过时,因为我在最后一次构建之前将 getSomeInt 更改为另一个整数,它返回旧的。我还尝试在 chromium 首选项页面中禁用/启用插件,结果相同。

第一个问题:上面的代码块有什么问题/为什么它返回“未定义”?

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

4

1 回答 1

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>

另外:在调用reload()函数之前,您需要调用navigator.plugins.refresh(false);以使浏览器重新加载可用插件列表。

此外:我发现这种重新加载加载插件的方式效果很好。直到没有。有时(很少)它会顽固地使用旧插件(用 Chrome 测试)。我更新了文档以反映这一点。

2)您可以使插件崩溃并重新加载页面。有利于发展,但没有别的。在生产中使用它会让你直接下地狱。

于 2012-03-10T11:46:48.033 回答