【问题标题】:Convert extension and open it using an application转换扩展并使用应用程序打开它
【发布时间】:2015-08-28 20:25:21
【问题描述】:

我有一个脚本,我想在其中将扩展程序转换为另一个,然后使用特定的应用程序打开它。

例如,我的 .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>

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    出于安全考虑,Javascript 不能在文件系统上写入,因此无法更改文件的扩展名。

    您应该可以使用新的 FileSystem 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";
    

    【讨论】:

    • 谢谢,但我需要它在 Internet Explorer 中运行,有什么办法吗?
    • 在原生 Javascript 中,没有。对于 ActiveX,您可以使用 GetFile,然后使用 file.name = 'newname.ext';但我从未尝试过。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多