0

我想在更新后重新加载插件而不重新启动浏览器。我尝试了mac版本,它工作正常,但是,我需要更改每个版本的插件名称。

navigator.plugins.refresh(false);

http://www.firebreath.org/display/documentation/Deploying+and+updating+your+plugin?focusedCommentId=8585308#comment-8585308

在 Windows 中,我尝试了这些步骤,但无法使其正常工作。有没有人有这方面的运气?有谁知道可能出了什么问题?

“在 Windows 上,您甚至需要将其安装到具有特定于版本的文件名的特定于版本的目录中。安装插件后,您可以尝试以下方法在打开的浏览器中重新加载插件

<script>
    var myplugin = "<object id=\"plugin\" type=\"application/x-foobar\"> </object>";
    function onload(){ // Assuming this function put your plugin on the page in the first place
        document.getElementById('pluginHere').innerHTML = myplugin;
    }
    function reload(){
        document.getElementById('pluginHere').innerHTML = "";
        document.getElementById('pluginHere').innerHTML = myplugin;
    }
</script>

多谢。

4

2 回答 2

1

这是一个困难的技巧,可能会以很多不同的方式出错。我很难猜出具体可能出了什么问题,特别是因为你说“在 Windows 上”,但你没有指定那是什么浏览器。所有浏览器的工作方式都以微妙的方式不同,而 IE 和其他浏览器则完全不同。

你可以尝试的事情:

  • 使用 setTimeout 在从 DOM 中删除插件和重新添加插件之间添加一个小的延迟
  • 打开 about:plugins 然后 shift-refresh 看它是否选择了新版本
  • 尝试不同的浏览器,看看行为是什么
  • 使用Process Monitor监控注册表的查询并查看注册表项何时被访问;使用它来帮助计划您的策略。

无论如何,我希望其中一些有所帮助;我曾经以这种方式升级,但它太容易出错并且太容易随着新浏览器的变化而发生变化,所以这些天我只是让客户端在升级时重新启动他们的浏览器。它节省了很多麻烦和大量的开发时间。

于 2012-08-19T03:27:31.713 回答
0

我使用带有 MSI 的签名 CAB 在 Internet Explorer 上加载插件。在第一次安装时,我发现可以从 Javascript 访问该插件,但事件不起作用。当我查看加载的插件时,插件没有加载。如果我刷新页面,插件就会加载。我的解决方案是从这个堆栈溢出问题中添加以下代码 One time page refresh after first page load 这就像一个魅力。

于 2013-08-14T09:29:18.543 回答