【问题标题】:Open link in Firefox via contextual menu using Applescript使用 Applescript 通过上下文菜单在 Firefox 中打开链接
【发布时间】:2011-04-22 19:49:51
【问题描述】:

我是使用 Applescript 在 Snow Leopard 中创建服务的新手。我发现自己经常尝试使用 Firefox 在 Safari 中打开链接。我知道有办法用 FF 打开页面 url,但我想用 FF 打开页面内的任何链接。我认为使用 Applescript 创建服务可能是个好主意,到目前为止我发现了这一点:

openFirefoxURL("http://www.apple.com/")

on openFirefoxURL(x)
   return do shell script "open -a Firefox" & space & quoted form of x
end openFirefoxURL

这很好地在 FF 中创建了一个新标签。有什么建议可以调整它以打开页面上的链接?

更新:我通过反复试验找到了解决方案:

tell application "Safari"
    set myURL to (do JavaScript "(getSelection().anchorNode.parentNode.href)" in document 1)
end tell

do shell script "open -a Firefox" & space & myURL

既然脚本符合我的目的,我不知道是否有更好的方法可以做到这一点,例如通过 Applescript 而不是 javascript 获得选择。如果您有更好的解决方案,请告诉我。谢谢!

【问题讨论】:

    标签: macos osx-snow-leopard applescript


    【解决方案1】:

    我在网上搜索了一段时间没有找到合适的解决方案后,刚刚写了另一种方法。

    它是 AppleScript 中的一项服务,可以从任何其他应用程序 URL 字段打开 Firefox 中的任何 URL。例如,只需选择 Chrome 的 URL 中的文本,然后从列表中选择服务。

    创建服务:

    1. 在 Automator 主对话框中选择服务。
    2. 选择“服务接收选定”[URL]
    3. 选择“在”[任何应用程序]
    4. 选择“输入是”[仅 URL]

    5. 然后添加动作“Run Shell Script”,将其拖到脚本序列中。

    6. 选择“Shell”[/bin/bash]
    7. 选择“传递输入”[作为参数]
    8. 并粘贴以下脚本:
    for f in "$@"
    do
        echo "$f"
        if [ ${f:0:4} = "http" ]; then
            open -a Firefox "$f"
        else
            prefix="http://"
            prefix+=$f
            open -a Firefox "$prefix"
        fi
    done
    

    脚本会检查是否添加了“http”前缀,因为 Chrome 默认不通过它,并使用 OSX 的“打开”命令打开 Firefox。

    使用名称“在 Firefox 中打开 URL”保存此服务,您就完成了。右键单击任何 URL 字段选择后,该服务将在服务列表菜单中可用。

    完成。

    服务保存在 ~/Library/Services。这个目录在 Lion 中默认是隐藏的,要查看它只需在终端发出以下命令:

    # chflags nohidden ~/Library/
    

    【讨论】:

    • 不幸的是,这不适用于网页内的链接,因为传递给粘贴板的选择是 <a> 标记的内容,而不是 href 属性中的 URL(有一个如果地址栏中的 URL 也被选中,Safari 中的奇怪怪癖将在链接选择上显示 URL 接收服务 - 但是,该服务将接收地址栏中的 URL,而不是文档中所选链接的 URL。
    【解决方案2】:

    您不需要特殊的程序来执行此操作。 Safari 已经做到了。您必须首先在 Safari 中启用“开发”菜单。转到 Safari 的首选项,转到高级部分,然后选中底部名为“在菜单栏中显示开发菜单”的框。现在您有了“开发”菜单,您可以在另一个浏览器中打开 Safari 中的任何页面,方法是转到“开发”->“打开页面”菜单。

    这样做会在 Firefox 中打开当前页面,然后只需在 Firefox 中单击您想要的任何链接。

    【讨论】:

    • 开发人员的“打开页面方式”菜单不是我在这里需要的。当我右键单击页面上的链接时,我想要一个上下文菜单选项“在 Firefox 中打开链接”。这样我就不必在 FF 中打开我当前的页面,然后单击链接来获取我想要的内容。与 Dev Open Page 方式相比,它节省了一个额外的步骤。
    • "我想要一个上下文菜单选项" 如果 Safari 不存在,那么你将不得不为 Safari 编写一个扩展。
    【解决方案3】:

    我不确定我是否完全理解您想要做什么,但如果您希望使用 Firefox 作为您的默认浏览器,那么您不需要 Applescript。只需进入 Safari,打开首选项,然后在第一个选项卡顶部选择 Firefox 作为默认浏览器。

    【讨论】:

    • 我更喜欢 Safari 作为我的主要浏览器。无论如何感谢您的重播。
    【解决方案4】:

    由于 Safari 的 AppleScript 字典不提供任何访问 DOM 的方法,因此 JavaScript 解决方案是一个不错的解决方案。如果即使所选文本中没有链接也让您感到烦恼的是提供服务(“在 Firefox 中显示 URL”),我建议您使用 Choosy,这是 George Brocklehurst 的帮助应用程序/首选项窗格,它将为您提供浏览器的用户提示(以及更多,直到基于模式的选择规则)。 a companion Safari extension 提供了您正在寻找的上下文菜单选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多