【问题标题】:Opening a file system folder/directory from web browser从 Web 浏览器打开文件系统文件夹/目录
【发布时间】:2010-11-18 18:04:28
【问题描述】:

我将我的桌面应用程序通过闪存驱动器分发给 Windows、Mac 和 Linux 上的数千名用户。我有一个 HTML 起始页,其中包含指向闪存驱动器上的文档、安装指南、发行说明等的链接。我希望用户直接从浏览器安装,但这正是防病毒程序试图阻止的(而且是正确的)。无需尝试启动安装程序,只需找到安装程序并让用户自己完成最后一步即可。

是否可以使主机上的文件系统管理器(Explorer、Finder 等)打开包含该文件的文件夹并突出显示它?我认为这将需要 JavaScript,并且对于 Windows、Mac 和 Linux 可能必须有所不同。此外,可在大多数浏览器(IE、FF、Chrome、Safari、Opera)中使用。

这是否与解决费马大定理的难度相似?

谢谢

【问题讨论】:

    标签: javascript linux macos cross-browser windows-explorer


    【解决方案1】:

    不。浏览器(或大多数浏览器*)会阻止这种行为。它们在您的实际文件系统和 Web 为您提供的内容之间有一堵墙。只有 HTML 输入控件打破了这一点,而且他们也有相当多的保护。

    *- 您可以使用 IE ActiveX 控件,但仅限 IE。

    【讨论】:

      【解决方案2】:

      只要页面是从本地文件系统加载的,此 JS 代码应该适用于 Windows 上的 IE 和 Firefox。您需要在 Linux/OSX 上对此进行测试。我不知道你会如何处理 chrome/safari/opera。

      function execute(command, commandParam)
      {
      
        if (isIE()) {
          try {
            activexShell = new ActiveXObject("Shell.Application");
            activexShell.ShellExecute(command, commandParam, "", "open", "1");
            exit();
          } catch (e) {
            alert("exception " + e.name + ': ' + e.message);
          }
        }
        else {
          try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            var FileFactory = new Components.Constructor("@mozilla.org/file/local;1","nsILocalFile","initWithPath");      
            var program = new FileFactory(command);
            var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces. nsIProcess);          
            process.init(program); 
            process.run(false, commandArray, commandParam.split(" ").length - 1, {});
            exit();
          } catch (e) {
            alert("exception " + e.name + ': ' + e.message);
          }
        }
      }
      

      当然,您可能需要对 .js 文件进行签名才能使其正常工作。有关更多信息,请参阅此处:http://www.mozilla.org/projects/security/components/signed-scripts.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 2014-10-14
        • 2021-01-22
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        相关资源
        最近更新 更多