【问题标题】:Hyperlink click should open the document in Default program超链接点击应该在默认程序中打开文档
【发布时间】:2013-07-02 14:46:30
【问题描述】:

我的 html 文档中有一个超链接

<a href="file://c:/directory/file.txt">click</a>

当我单击超链接时,指定的文件会在浏览器本身中打开。

是否可以在记事本或崇高文本或任何文本编辑器中打开该文件,这是文件类型的默认程序(在本例中为 txt)。我可以在 javascript 或 jquery 中以编程方式进行吗?有什么办法吗?

注意:这只是一个独立的应用程序。我开发了一个插件,它在给定源目录中的所有文件中搜索我作为输入提供的模式,并打印出该目录中包含该模式的所有文件名。它打印到输出报告 html 文件。我只是想将文件路径名链接到默认编辑器,以便他可以编辑并保存。没有安全问题。能做到吗?

如果没有,还有其他方法可以完成这项任务吗?我可以生成任何格式的输出报告。请帮忙。

【问题讨论】:

  • 您不能在不影响浏览器安全的情况下执行此操作。您必须修改 TXT 的浏览器 MIME 类型和关联的默认文件。
  • 这是一个内网站点还是只是一个本地独立应用程序?
  • 如果不是本地的,可以考虑为什么需要在记事本中打开。它可以改为在文本区域中打开吗?此外,这可以通过允许用户进行更改然后保存来推进 - 或者返回到 file.txt,或者,例如,fileN.txt。
  • 如果您通过 而不是链接指向它,您可以获取内容,然后使用客户端下载器将其作为奇怪的 mime 类型打开,允许用户选择记事本之类的开瓶器来处理文件...
  • @Teemu。它只是一个独立的应用程序。没有安全问题。我还编辑了问题的描述。请看一下并建议我一种方法。

标签: javascript jquery html plugins


【解决方案1】:

正如其他人所提到的,您可能无法在不影响浏览器安全的情况下执行此操作。但我遇到了一个可能对you 有帮助的链接。

<script type="text/javascript" language="javascript">
    function RunFile() {
        WshShell = new ActiveXObject("WScript.Shell");
        WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
    }
</script>

编辑:这会打开一个空的记事本,它只适用于 Windows。您可以使用js 来区分不同的操作系统并相应地运行它们的默认文本编辑器,但我不会走这条路。为什么不改用在线编辑器?

【讨论】:

  • 这会打开一个空的记事本,为什么不使用文件路径呢?也仅适用于 IE。
  • 好收获!我没有意识到我有足够的代表来评论这些问题。哎呀!应该是评论。
  • 实际上我打算回答这样的问题,但我正在等待 OP 对我上面的评论的回答......如果它是一个网站,这可能不会工作,即使在 IE 中也不行.
  • @parzival 谢谢你的回答。这是一个独立的应用程序。我开发了一个插件,它在给定源目录中的所有文件中搜索我作为输入提供的模式,并打印出包含该模式的所有文件名。它打印到输出报告 html 文件。我只想将文件路径名链接到默认编辑器。没有安全问题。能做到吗?
【解决方案2】:

出于安全原因HTML/JavaScript 不允许访问本地文件系统。

http://en.wikipedia.org/wiki/JavaScript#Security

JavaScript 和 DOM 为恶意作者提供了通过 Web 传递脚本以在客户端计算机上运行的可能性。浏览器作者使用两个限制来控制这种风险。首先,脚本在沙箱中运行,它们只能执行与 Web 相关的操作,而不是创建文件等通用编程任务。其次,脚本受到同源策略的限制:来自一个网站的脚本无法访问发送到另一个站点的用户名、密码或 cookie 等信息

您必须发出服务器请求才能获取资源。

【讨论】:

    【解决方案3】:

    您不能在不损害浏览器安全的情况下执行此操作。您必须修改 TXT 的浏览器 MIME 类型和关联的默认程序。如果它在您的本地网络上,并且您在域上,并且每个用户在他们的计算机上都具有管理员权限,那么理论上您可以进行注册表破解并更改在外部编辑器中打开文本文件的默认设置,但这会损害安全性,如果您在域网络中,您的管理员权限可能会从本地计算机上被剥夺。

    【讨论】:

    • 感谢阿米特的回答。这只是一个独立的应用程序。所以不存在安全问题。我已经编辑了问题的描述。请看一下并建议我的方法。
    【解决方案4】:

    我正在寻找类似的东西并找到了solution。也许有人会发现它很有用。 如果您只想在自己的计算机上执行此操作,则可以。

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 2014-12-09
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2015-12-02
      • 2011-06-05
      相关资源
      最近更新 更多