0

我有这个非常棒的小applescript(如下),它允许我在他们的默认Fluid App中打开链接。但是,它会分解为本地 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 来触发上下文菜单功能。我不需要对这些进行任何特殊处理 - 我只希望它们像任何其他 URL 一样使用 Google Chrome 打开。

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

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

1 回答 1

0

我理解您说只有默认浏览器部分失败并带有 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
于 2014-12-02T18:24:13.017 回答