2015-08-28 45 views
1

我收到了一个脚本,其中我想将扩展名转换为另一个扩展名,然后使用特定应用程序打开它。转换扩展名并使用应用程序将其打开

例如,我的.mht文件位于我的桌面。一个带有内部javascript的html文件。

我想要发生的是当我在Internet Explorer上打开HTML文件并单击超链接时,它应该将.mht文件转换为.docx并使用Microsoft Word打开它。不幸的是,我的下面的代码不起作用,如果我点击超链接,它确实打开了Microsoft Word,但给我一个错误消息,说该文件找不到。有人可以帮助我吗?在此先感谢,将不胜感激。

<HTML> 
    <HEAD> 

<script type="text/javascript"> 
    <!-- 

    function openDocument(file) 
    { 
     try 
     { 
      var Word = new ActiveXObject("Word.Application") 
      var file; 
      file = file.split("."); 
      file = file[0]+".docx"; 
      Word.Visible = true 
      Word.Documents.Open(file) 
     } 

     catch(exception) 
     { 
      if(Word) 
      { 
       alert(exception.message) 
       Word.Quit() 
      } 
      window.location.href = file 
     } 
    } 

    // --> 
    </script> 
    <TITLE>Launch Word - Local</Title> 
    </HEAD> 
    <BODY> 

<a href="javascript:openDocument('C:\Users\test\Desktop\KB.mht')">Summary</a> 

    </BODY> 
    </HTML> 

回答

0

出于安全目的,JavaScript不能写在文件系统,所以它不可能改变一个文件的扩展名。

你应该能够做一些与新的文件系统API(检查教程:http://www.html5rocks.com/en/tutorials/file/filesystem/),但它仅适用于Chrome浏览器(http://caniuse.com/#feat=filesystem

编辑: 使用ActiveX,使用的GetFile可能工作:

var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var file = fso.GetFile("c:\\myfile.mht"); 
file.name = "newName.newExt"; 
+0

谢谢,但我需要它在Internet Explorer中运行,有什么办法吗? –

+0

在本地Javascript中,没有。使用ActiveX,你可以使用GetFile,然后file.name ='newname.ext';但我从来没有尝试过。 – Finrod

相关问题