【问题标题】:Easiest way to execute local file from Firefox?从 Firefox 执行本地文件的最简单方法?
【发布时间】:2023-03-06 05:29:01
【问题描述】:

我正在开发一个网络应用程序。 我想扩展我的错误消息(及其回溯),以便我可以单击提到的文件,并在我的 PHP IDE 中自动打开它。

我想让它成为一个易于激活的功能,以便任何使用 Web 应用程序的人都可以轻松地将错误消息映射到他们的本地站点副本,并打开他们的 IDE。

在 Windows(7) 上的 Firefox 中单击时执行本地命令(调用 IDE 的批处理文件)最简单的方法是什么 - 除了开发自定义 FF 扩展之外? 我一直在寻找扩展,但没有运气。也许使用另一个扩展,如 Firebug 或 Greasemonkey?

安全不是问题,因为这应该只适用于开发人员的工作站,我可以更改本地 Firefox 的设置。

【问题讨论】:

    标签: php javascript firefox


    【解决方案1】:

    您可以向 Windows (http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx) 添加一个新协议(如“edit://”)并编写一个小型处理程序,该程序从“edit://” url 中选择一个文件名并将该文件传递给编辑。通过这种方式,我教 Windows 以我的 mac 的方式理解 txmt 链接 (http://blog.macromates.com/2007/the-textmate-url-scheme/)。

    【讨论】:

    • 有趣的是,我看到一个 sn-p 建议这样做,但它并没有立即起作用,我认为它可能仅限于某个操作系统。我会再试一次。这将是很棒的,因为它独立于浏览器,并且如果操作正确,几乎不会产生安全隐患。
    • @Pekka:请参阅kint's scripts,了解如何注册自定义协议并使用它来调用某些文本编辑器的示例。
    【解决方案2】:

    没有办法用 javascript 做到这一点。但它看起来可以使用 Firefox 插件。有一个look at this

    【讨论】:

    • 这看起来很有趣,但我对 XUL 一无所知,并且无法弄清楚如何将其转换为执行本地文件(而不是写入它)的东西。非常欢迎提示。
    • 编写扩展并不难。用谷歌搜索它,阅读一些教程,然后搜索“执行本地文件 firefox 扩展”。
    • 点了。我可能会回到这个,但会先尝试协议方法(见下文)。
    【解决方案3】:

    http://mozex.mozdev.org/

    MozEX 是一个允许用户使用外部程序进行这些操作的扩展:

    * edit content of textareas (possibly utilizing a spell-checker, color syntax etc.)
    * view page source
    * handle mailto, news, telnet and FTP links
    * download files
    * ... and many more :)
    

    通用处理程序允许您输入协议方案列表,例如“abc://,def://”和 命令来处理它们。因此,您只需让您的应用程序生成一个以 您选择的(组成)协议,mozex 将拦截对 url 的点击并发送 url 到您选择的命令作为参数。

    我认为这正是你想要的。

    【讨论】:

    • 对您链接中网站上的插件或源代码的访问似乎已过时,但我在谷歌搜索一段时间后找到了一份副本,并将其加载到 Github 以防其他人正在寻找它..github.com/dcondrey/Mozex
    【解决方案4】:

    我认为最接近这一点的方法是让 Web 浏览器的配置将特定的 mime 类型与给定的“帮助应用程序”(此处为 IDE 程序)相关联,并让 HTTP 服务器返回此类一个文件。

    否则,出于安全考虑,浏览器将不会在客户端上运行任何“任意”程序/逻辑。

    【讨论】:

    • 将文件与 IDE 关联不会有帮助,因为 IDE 应该打开的文件是本地副本。一个可以——我不这么认为——当然可以在 PHP 端生成 .bat 文件,其中包含使用文件的本地副本打开 IDE 的指令。但由于会打开巨大的安全漏洞,我不会长期使用它。
    • 另外,您可以注册一个由您的 IDE 处理的协议处理程序(就像 iTunes 和 Skype 等其他应用程序一样)。
    【解决方案5】:

    佩卡,

    到目前为止,在阅读了该线程之后,您似乎想要构建一个以某种方式通过服务器进行身份验证的应用程序——即:“普通用户”无法访问它。如果是这种情况,那么在不编写自定义扩展的情况下通过浏览器交付它​​是不可能的。

    通过 GreaseMonkey 运行身份验证很困难,但是一旦客户端通过身份验证,就没有真正的方法可以“运行”跟踪。

    如果服务器生成批处理文件或某种指令集(脚本、快捷方式等),您可以简单地配置浏览器(或让应用程序的本地实例配置浏览器)来运行文件。这里的问题是你没有办法自动认证!

    我能想到的唯一另一种方法是通过 Java 小程序来工作,这只会很麻烦,并且每次您想要导入跟踪时都需要 Java 进行初始化。

    您遇到的问题是浏览器本质上是安全的。它旨在保护计算机免受恶意软件、流氓网站等的侵害,因此如果不为浏览器开发自定义扩展,就无法跳转到与浏览器一起运行的任何应用程序。

    因此,我建议您重新考虑编写如上所述的 Firefox XUL 扩展。您可能还需要实现一些 XPCOM 代码才能使其工作。以下是一些可以帮助您入门的资源:

    https://developer.mozilla.org/en/xpcom

    https://developer.mozilla.org/En/XUL

    http://ted.mielczarek.org/code/mozilla/extensiondev/

    https://developer.mozilla.org/en/XUL_Tutorial/Introduction

    【讨论】:

    • 感谢您提供广泛的答案和链接。身份验证不是#1 问题,因为我的框架中的错误处理程序已经这样做了(规则是“向用户显示通用错误消息,并且仅当用户以管理员身份登录或打开详细模式时才显示特定详细信息”) .因此,对我来说,能够以某种方式关闭本地 Firefox 中某个 URL 的 all 安全性将是完美的解决方案。然后,PHP 站点可以向我发送指向 file://C://development/.... 或其他内容的链接。如果这不起作用,我会看看写一个扩展。
    【解决方案6】:

    我不知道您使用的是哪个 IDE,但在例如 Eclipse 中,您还可以使用内置的 webbrowser 来测试您的 webapp,并且 Eclipse 控制台日志中的异常/跟踪已经有指向源代码的链接有问题。就这么简单。看看你的 IDE 是否提供类似的东西。

    【讨论】:

    • 我使用 phpEd 并需要在无法使用调试器的环境中进行远程测试。另外,我希望尽可能保持与 IDE 的独立性。
    猜你喜欢
    • 2010-10-18
    • 2018-07-25
    • 1970-01-01
    • 2021-04-13
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2023-04-06
    相关资源
    最近更新 更多