我正在开发一个Web应用程序(ASP.NET),它具有一些需要在客户端上安装Microsoft Excel的功能。如果Excel不存在,我想禁用这些功能。
仅Windows / IE / Excel解决方案很好。这不是一个多浏览器,多操作系统的Web应用程序。
任何聪明的JavaScript都可以实现这一目标吗?
答案 0 :(得分:6)
没有
您不能深入潜入客户端计算机以找出该部分。您可以做的最好的事情就是假设它已经安装,并且如果没有安装会发生什么,或者只是询问用户。
答案 1 :(得分:2)
你可以这样做,但你会得到各种安全警告:
<script>
var excelInstalled;
try
{
var excel = new ActiveXObject("Excel.Application");
excelInstalled = true;
}
catch(e)
{
excelInstalled = false;
}
alert("excelInstalled: " + excelInstalled);
</script>
答案 2 :(得分:1)
为何选择Excel?如果我有OpenOffice.org会怎么样?
只需警告用户您要发送的内容,请使用“Excel文件”标记该链接,然后由他决定。
答案 3 :(得分: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插件。我不太了解这个插件 - 很可能并不总是安装办公室...但我认为,如果上面的内容返回true,那么安装Excel是一个非常强烈的信号。当然它可能用途有限,因为它在IE中不起作用,但也许你可以用它做点什么......
答案 4 :(得分:0)
您无法使用标准技术访问Web浏览器上下文之外的客户端信息。但我看到其中一个答案是使用一些ActivX对象来检测Excel。无论如何,这些技术仅适用于Windows上的Internet Explorer。那Mac呢?那些其他浏览器如Opera或firefox或者Chrome上的浏览器呢? 我认为最好让用户告知您这件事。只要询问用户是否安装了excel:
var isExcel = window.confirm('dear user if you have Microsoft Excel installed please click on ok, otherwise click on cancel. thank you.');
答案 5 :(得分:0)
这在开始时是个坏主意。你想做什么 - 重新考虑。
如果你仍然坚持:
尝试创建用于Excel的ActiveXObject,然后用于OpenOffice。 如果失败,请重定向到NoExcel.html或将XMLRequest发送到服务器 此外,如果有XLS文件扩展名处理程序,您可以尝试通过JavaScritp查找。 最后,您可以安装ActiveX来检查是否安装了Excel。
这是针对Windows的。不知道mac,linux,mobile ...... 您可以打赌,任何使其工作的方式都将停止使用下一个修补程序。