Перезагрузка загруженного плагина - PullRequest
0 голосов
/ 10 марта 2012

Я следовал указаниям, найденным здесь:

http://www.firebreath.org/display/documentation/Tips+and+Tricks#TipsandTricks-Reloadingaloadedplugin

и это блок, который я добавил в FBControl.htm для FBTestPlugin:

    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, я запускаю onload () из консоли JS. Он возвращает «undefined», и я знаю, что плагин устарел, потому что я изменил getSomeInt на другое целое число перед последней сборкой, и он возвращает старую. Я также попытался отключить / включить плагин на странице настроек Chromium, тот же результат.

Первый вопрос: что не так с приведенным выше блоком кода / почему он возвращает «undefined»?

Второй вопрос: есть ли другой способ перезагрузить плагин вручную, кроме перезапуска браузера?

1 Ответ

2 голосов
/ 10 марта 2012

1) Вы неправильно используете ID 'plugin0'. На странице написано

 var myplugin = "<object id=\"plugin\" type=\"application/x-foobar\"> </object>";
 ...
 document.getElementById('pluginhere').innerHTML = myplugin;
 ...
 <div id="pluginhere"></div>

Обратите внимание на идентификаторы, которые вы хотите поставить <object> в <div>.

Plus: Перед вызовом функции reload() необходимо вызвать navigator.plugins.refresh(false);, чтобы браузер перезагрузил список доступных плагинов.

Более того: я обнаружил, что этот способ перезагрузки загруженных плагинов работает хорошо. Пока это не так. Иногда (редко) он будет упорно использовать старый плагин (протестировано с Chrome). Я обновил документы, чтобы отразить это.

2) Вы можете разбить ваш плагин и перезагрузить страницу. Хорошо для развития, но больше ничего. Использование этого в производстве отправит вас прямо в ад.

...