我有一个非常棒的小苹果脚本(下图(,它允许我在他们的默认 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