2013-08-07 427 views
0

我有瀏覽器插件的Safari/Firefox在Mac.When用戶啓動網頁時,它會要求用戶下載插件。按理說,它應該刷新頁面時自動下載完成並利用插件。NPAPI插件沒有得到加載時,安裝和瀏覽器插件方法調用失敗

代碼能夠檢測插件,但是當我在插件中調用方法時,它會拋出異常。 如果我手動刷新頁面並調用插件方法,我可以做到這一點。

InitPlugin() 
{ 
var IsPluginInstalled; 
var plugin = navigator.plugins["My Plug-In"]; // success 
var engine; 
if (plugin) 
{ 
    engine = plugin.getElementById("MyPlugin"); 
    var version = engine.getAttributeByKey("my_plugin_version"); // crashing here. 
    IsPluginInstalled = true;        

} 
} 
RefreshPlugin() 
{ 
     navigator.plugins.refresh(); 
     if (!InitPlugin()) 
     { 
      setInterval(InitPlugin,3000); 
     } 

} 

頁安裝後應該自動刷新 這是代碼,如果手動刷新頁面,做工精細。

回答

0

我看不到此頁面刷新的位置。儘管如此,應該重新實例化插件(例如將其切換爲display:none並返回)。

這也看起來像你可能很快訪問插件 - 插件可能還沒有完成實例化。

發現後,它在navigator.plugins和(重新)上市的實例,你可以:

  • 定期嘗試訪問它,直到它的工作原理或
  • (更好)有你的插件調用到頁面時,它完成加載

在這兩種情況下,你會希望有一個「合理」的時間後超時,並得出結論:要麼

  • 加載失敗或
  • 插件被阻止(插件被設置到點擊播放或一些擴展阻止它)

...有這個在MDN一個best-practices article

+0

:有沒有什麼辦法可以知道是否通過Java腳本加載了瀏覽器插件。如果我知道我可以重新加載頁面 –

+0

您可以通過上面的方法判斷它是否在特定的時間範圍內加載,但你不能確定它爲什麼沒有加載它(插件未能實例化,是點擊播放,...)。 –

相關問題