如何通过Applescript将 file:// URL重定向到特定浏览器



我有一个非常棒的小苹果脚本(下图(,它允许我在他们的默认 Fluid 应用程序中打开链接。 但是,它针对本地 URL 进行了细分:file:///

on open location this_URL
    if this_URL contains "drive.google.com" then
        tell application "/Applications/Fluids/Google Drive.app"
            activate
            open location this_URL
        end tell
    else if this_URL contains "mail.google.com" then
        tell application "/Applications/Fluids/Gmail.app"
            activate
            open location this_URL
        end tell
    else
        -- default browser here
        tell application "/Applications/Google Chrome.app"
            activate
            open location this_URL
        end tell
    end if
end open location

这里最大的缺点是Dropbox的上下文菜单共享链接依赖于这些本地文件,因此功能已损坏。

如何更新它以重定向本地 URL? 我已经搜索了互联网,似乎无法弄清楚。

编辑:更多信息

此问题出现在任何"file:///"的 URL 中。 似乎"this_URL"不包括本地URL,否则根据脚本中的最终"else"语句,谷歌浏览器应该打开它。 发生的情况是default_browser脚本打开,然后关闭,然后重复 - 它再次打开/关闭。 没有其他事情发生。 Dropbox 和其他应用使用 file:///网址来触发上下文菜单功能。我不需要对这些发生任何特别的事情 - 我只是希望它们像任何其他URL一样使用谷歌浏览器打开。

注意:我已经尝试了如下代码,但它不起作用。

if this_URL contains "file:///" then ...

我理解您说只有默认浏览器部分因 file:///URI 而失败。如果是这样,您只需要确保它们以正确的格式发送到浏览器。文件结构格式应如下所示:

file:///Users/MyHome/Desktop/My%20File.txt

放入显示对话框以检查this_URL并确保文件结构格式正确。您可以捕获默认浏览器部分中的 file:///URI,以便在需要时进行一些格式化,包括对必要的实体进行编码。我猜实体会绊倒你,因为你得到的不是错误,而是空白页。您需要删除空格等内容。

else
    -- default browser here
    if this_URL contains "file:///" then set this_URL to formatURL(this_URL)
    tell application "/Applications/Google Chrome.app"
        activate
        open location this_URL
    end tell
end if
-- at end of script add this routine:
on formatURL(s)
    return (do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of s)
end

相关内容

  • 没有找到相关文章