由于只有开发人员可以理解的原因,Firefox将在Windows上创建和打开.url文件,在OS X上创建.webloc文件,但不允许Windows版本的Firefox打开.webloc文件或OS X版本Firefox打开.url文件。 (.url文件在Safari中打开但是由于不值得进入这里的原因而不够好。)作为我在任一系统上使用任一文件类型的努力的一部分,我正在编写一个AppleScript来打开OS上的.url文件X Firefox。
on open the_droppings
set filePath to the_droppings
set fp to open for access filePath
set fileContents to read fp
close access fp
set secondLine to paragraph 2 of fileContents
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "="
set URLstring to last text item of secondLine
set AppleScript's text item delimiters to tid
tell application "Firefox"
activate
OpenURL URLstring
end tell
end open
我认为这会有效但是在第3行到最后一行它说“预期的行尾等,但找到了标识符。”这是为什么?
编辑以下sakra的回答大多有效,但在包含“=”的网址上中断,例如:http://example.com?foo=a&bar=z
答案 0 :(得分:2)
Firefox似乎根本没有AppleScript字典。因此,OpenURL
语句中的术语tell app "Firefox"
被解释为AppleScript标识符,而不是AppleScript命令。连续两个AppleScript标识符会导致语法错误。
作为解决方法,您可以将shell命令open
与标准AppleScript命令do shell script
结合使用:
on open the_droppings
set filePath to the_droppings
set fileContents to read filePath
set theOffset to offset of "URL=" in fileContents
set URLstring to text (theOffset + 4) through -1 of fileContents
do shell script "/usr/bin/open -a Firefox.app " & quoted form of URLstring
end open
答案 1 :(得分:0)
编辑:在这里的应用程序中下载我的脚本:http://www.mediafire.com/?v77bv9gl9e7oj40
这样做效果更好:
on open the_droppings
set filePath to the_droppings
set fileContents to read filePath
set theOffsetA to offset of "URL=" in fileContents
set theOffsetB to offset of "IDList=" in fileContents
set URLstring to text (theOffsetA + 4) through (theOffsetB - 3) of fileContents
do shell script "/usr/bin/open -a Firefox.app " & quoted form of URLstring
end open
它读取URL =行到下一行(IDList)减3步(忽略\ r \ n)并将其发送到firefox。对我来说就像一个魅力。 然而,我看到了具有奇怪布局的url文件(例如:http://forums.mozillazine.org/viewtopic.php?p=2619487),我不确定它是否可以在那里工作。但我检查了很多我的url文件,他们没有那个,所以至少它对我来说很好。如果你遇到这个剧本的麻烦,请告诉我。目前我将其设置为打开URL文件的默认应用程序,而不是Safari!
为了能够使用applescript文件打开url文件,需要在其plist中设置正确的doctypes和标识符,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>url</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>document.icns</string>
<key>CFBundleTypeName</key>
<string>URL File</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>URL</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>droplet</string>
<key>CFBundleIdentifier</key>
<string>filehandler.url.mozilla.firefox</string>
<key>CFBundleIconFile</key>
<string>droplet</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>FirefoxURLHandler</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>dplt</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
<string>10.6</string>
</dict>
</dict>
</plist>
答案 2 :(得分:-1)
我知道这不是苹果脚本,但我这样做是为了在 Linux 上打开它们,但它有一个问题,如果终端关闭,它会杀死浏览器。我打开这个另外一个问题,但是这可能会有帮助。
#!/bin/bash
#bash -c "cat $1 | grep URL | cut -d'=' -f2 | xargs firefox &"
echo OpenWinURL in firefox
echo Closing this window will close your firefox.
echo Try opening firefox before opening a OpenWinURL
#echo Copyright 2021 Aaron Peterson GPL V2 or later
#echo The ampersand doesn't work after firefox
#echo "$1"
#
jobs -l
cat "$1" | grep -m 1 URL= | cut -d'=' -f2- | xargs -0 -i firefox {} #&
jobs -l
disown -h -a
jobs -l
#read -n 1 -p "Input Selection:" mainmenuinput
#echo testing
#wait 1000
#
#| head -n 1
#| cut -d'=' -f2 | xargs firefox &