2014-12-05 36 views
0

下面的JavaScript代碼會通知所有瀏覽器的插件啓用(是的,我知道這並不在IE瀏覽器,但IE瀏覽器總是有deployJava):使用navigator.plugins確定Java版本

if ((navigator.plugins) && (navigator.plugins.length)) { 
 

 
    for (var bb = 0, l = navigator.plugins.length; bb < l; bb++) { 
 

 
    var vv = navigator.plugins[bb].name + "<br>"; 
 

 
    document.write(vv); 
 

 
    } 
 

 
}

我的Java 6.22安裝這麼寫的頁面的相關行是這樣的:
的Java(TM)平臺SE 6 U22

我的問題是:如何補充上述代碼,以便返回在我的(或任何人)瀏覽器中找到的主要版本(6)和更新(22)?

我認爲最好的方法是使用正則表達式,但是我不擅長它。

回答

0

我認爲最簡單的(閱讀:hackiest)的解決辦法是這樣的:

var plugin_name = navigator.plugins[bb].name 
if (plugin_name.toLowerCase().indexOf("java") != -1) { 
    var parts = plugin_name.split(" ").reverse(); 
    // if the plugin has an update 
    if(plugin_name.match(/U[0-9]+/)) { 
     // grab the end of the plugin name and remove non numeric chars 
     var update = parts[0].replace(/[^0-9]/, ""); 
     // grab the major version and remove non numeric chars 
     var major = parts[1].replace(/[^0-9]/, ""); 
     // print the major number and update number 
     console.log(major); 
     console.log(update); 
    } else { 
     var update = "0"; 
     // grab the major version and remove non numeric chars 
     var major = parts[0].replace(/[^0-9]/, ""); 
     // print the major number and update number 
     console.log(major); 
     console.log(update); 
    } 
} 

然後,您可以通過插件拋出這個代碼在你的循環,並與任何邏輯上適當給予更換console.log一個主要和更新號碼。

+0

它像一個魅力......只有一個例外。 我安裝了Java 7(沒有任何更新),插件名稱爲: ** Java™Platform SE 7 ** 結果呢?您的代碼打印** E.7 ** 這個缺點可能會影響Java 8(沒有更新,即第一個版本)。任何想法如何解決它? – 2014-12-07 02:00:38

+0

@JohnD。檢查我的更新。我們檢查是否存在更新;如果不是,我們打印0作爲更新號碼。 – 2014-12-07 02:12:41

+0

謝謝。我已經知道了,但你的代碼也在工作。 – 2014-12-08 05:38:26