2008-12-23 101 views
3

我正在開發一個Web應用程序(ASP.NET),該應用程序的某些功能需要在客戶端上安裝Microsoft Excel。如果Excel不存在,我想禁用這些功能。是否可以檢測是否從Web應用程序安裝了Microsoft Excel

只有Windows/IE/Excel解決方案很好。這不是一個多瀏覽器,多操作系統的Web應用程序。

任何聰明的JavaScript在那裏做到這一點?

+0

darn我在度假w /無法訪問我的電腦。在工作中,我有Javascript代碼,它會告訴你是否安裝了Excel(當然只有IE)以及許多其他應用程序。你能等到1月5日嗎? ;-) – scunliffe 2008-12-24 21:02:15

+0

我很想看看你有什麼。所以請你回來後發佈。 – 2008-12-29 14:04:41

回答

6

號不允許你潛入客戶機深足弄清楚那部分。您可以做的最好的方法是假定它已安裝,並且仔細思考如果不是,或只是詢問用戶會發生什麼。

2

你可以做這樣的事情,但你會得到各種安全警告:

<script> 
var excelInstalled; 
try 
{ 
    var excel = new ActiveXObject("Excel.Application"); 
    excelInstalled = true; 
} 
catch(e) 
{ 
    excelInstalled = false; 
} 
alert("excelInstalled: " + excelInstalled); 
</script> 
+0

謝謝。我會試試這個,我對安全警告很好奇。 – 2008-12-29 14:05:16

1

爲什麼Excel中?如果我有OpenOffice.org,該怎麼辦?

只是警告用戶你要發送給他們,用「Excel文件」標記鏈接,並讓他決定。

0

使用標準技術,您無法訪問Web瀏覽器上下文之外的客戶端信息。但我看到其中一個答案是使用一些ActivX對象來檢測Excel。無論如何,這些技術僅適用於Windows上的Internet Explorer。那麼Mac呢?其他瀏覽器如歌劇或Firefox或鉻在Windows上怎麼樣? 我認爲最好讓用戶告訴你這個問題。只是詢問用戶是否已經安裝了excel:

var isExcel = window.confirm('dear user if you have Microsoft Excel installed please click on ok, otherwise click on cancel. thank you.'); 
0

這是開始時的壞主意。你試圖做什麼 - 重新考慮。

如果你還是堅持:

嘗試克里特島的ActiveXObject爲Excel,然後OpenOffice的。 如果失敗,重定向到NoExcel.html或發送XMLRequest到服務器。
此外,您可以嘗試通過JavaScritp找出是否存在XLS文件擴展名處理程序。 最後,你可以安裝你的ActiveX來檢查是否安裝了Excel。

這是用於windows的。不知道mac,linux,mobile ... 你可以打賭,任何你使它工作的方式都將停止使用下一個修補程序。

1
function hasOfficePlugin() { 
var toCheckExt = ['', '12', '13', '14', '15'], i, n, mt; 
    for (i = 0, n = toCheckExt.length; i < n; i++) { 
     mt = navigator.mimeTypes['application/x-msoffice' + toCheckExt[i]]; 
     if (mt && mt.enabledPlugin && mt.enabledPlugin.name) { 
      return true; 
     } 
    } 
    return false; 
} 

我已經使用Office 11(2003)和Office 12(2007)測試了上述內容,並且它似乎在Firefox,Safari,Chrome和Opera中運行良好。雖然它在IE中不起作用,因爲IE中的navigator.mimeTypes對象總是空的。

它檢查是否存在MS Office插件。我對這個插件瞭解不多 - 很可能它並不總是隨辦公室一起安裝......但我認爲,如果上述內容恢復正確,那麼安裝Excel是一個非常強烈的信號。當然,它可能是有限的使用,因爲它不工作在IE中,但也許你可以做一些事情...

相關問題