使用AppleScript从Web浏览器中最前面的窗口中获取URL:最终列表

时间:2008-11-04 22:36:18

标签: firefox safari applescript flock camino

我构建了一个 [widget] [1] ,它从Safari中最前面的窗口抓取URL,然后允许您使用tr.im API缩短它。工作甜美。

我想让它更灵活,所以我正在调查如何从其他浏览器中获取URL。这是在Safari中运行的AppleScript:

tell application "Safari"
    return URL of front document as string
end tell

some digging之后,我确定以下可能适用于Firefox(虽然有人告诉我它对他不起作用,可能与某些扩展冲突?):

tell application "Firefox"
    set myFirefox to properties of front window as list
    return item 3 of myFirefox
end tell

注意:上面是一个不太好的做法的例子,依赖于列表项的位置。请参阅下文以获得更好的Firefox解决方案。

我想要做的是在这里建立一个列表,列出Mac上每个现代浏览器的最终等价物:Opera,Camino,Flock等。

更新:在我对该主题的研究中,我在MacOSXHints.com上遇到了一个有用的帖子。我下面的大多数答案都是基于这个讨论。

更新2:我已将此页面上的AppleScript合并到[widget] [1]中。它似乎在起作用。

11 个答案:

答案 0 :(得分:3)

激活UI脚本并运行以下代码。然后,您将在剪贴板中显示该URL,然后将其粘贴。

tell application "Firefox" to activate
tell application "System Events"
    keystroke "l" using command down
    keystroke "c" using command down
end tell

答案 1 :(得分:3)

Google Chrome for Mac添加了AppleScripting方法来获取网址。

以下是Chromium AppleScript SDK

https://sites.google.com/a/chromium.org/dev/developers/design-documents/applescript

以下链接页面的示例:

   tell application "Google Chrome"
     get URL of active tab of window 1
   end tell

此处有更多示例:

http://laclefyoshi.blogspot.com/2010/10/google-chrome-ver.html

答案 2 :(得分:2)

Firefox(在版本2.0.0.14和3.0.1上测试):

tell application "Firefox"
    set myURL to «class curl» of window 1
    return myURL
end tell

答案 3 :(得分:2)

目前Firefox 3.03中存在一个错误,如果您之前使用过以下语句,它将隐藏AppleScript的所有窗口属性,包括«class curl»:

tell application "Firefox" to activate

tell application "Firefox"
 if (front window) exists then do_something()
end tell

解决方法是使用以下代码:

tell application "System Events"
 tell process "Firefox"
  set frontmost to true
  set xsist to (front window) exists
  (* keep xsist value to test later on *)
 end tell
end tell

注意:在下次重启Firefox之前,该窗口的属性仍然无法使用

答案 4 :(得分:2)

这是皮耶罗再次带着一个新的身份证(我在尝试重新安装Firefox时丢失了我的曲奇!)。

我刚试过Firefox 3.04没有改变AppleScript的支持和可靠性。 还是一样的错误...

我的测试和网上搜索,让我得出结论,你无法在同一个脚本中访问窗口的名称和窗口的其他属性,例如“class curl”。

如果您正在使用窗口的名称,那么,突然之间,您无法再访问它(获取随机二进制文件如字符串),您必须再次调用此代码:

tell application "Firefox" to activate

使用任何会在Firefox中生成错误的语句也可以正常工作,使窗口名称再次可用,但重新启动Mac不会改变任何内容!

一旦你完成了,正如我之前提到的那样,你再也无法访问«class curl»了,直到下一次Firefox重启......

在Mac上为Firefox编写脚本真是不可能完成任务!

如果你想在Firefox上支持AppleScript,请告诉它,并投票支持这个错误!!!

https://bugzilla.mozilla.org/show_bug.cgi?id=464701

答案 5 :(得分:1)

Camino 1.6及以上:

tell application "Camino"
    return URL of current tab of front browser window as text
end tell

与之前的答案不同,这将获得焦点标签的网址。

答案 6 :(得分:1)

感谢上面的Brian,这是防弹版本。

他的代码要求您粘贴URL,但是这个URL将URL设置为“FrontDocumentURL”,然后您可以将其用作脚本中的变量。

tell application "Firefox" to activate

tell application "System Events"
keystroke "l" using command down
keystroke "c" using command down
end tell

set FrontDocumentURL to the clipboard

答案 7 :(得分:0)

Opera(在版本9.21和9.62上测试):

tell application "Opera"
    return URL of front document as string
end tell

答案 8 :(得分:0)

Camino(在1.6.4版本上测试):

tell application "Camino"
    set p to properties of front tab of front window
    return |currentURI| of p as string
end tell

答案 9 :(得分:0)

Flock(在2.0版上测试):

tell application "Flock"
    set p to properties of front window as list
    return item 3 of p
end tell

这取决于列表项的位置,但据我所知,这是获得此值的唯一方法。该属性名为address,尽管Apple的文档没有这样说,但它似乎是AppleScript中的保留字。

答案 10 :(得分:0)

OmniWeb(在5.8版本上测试):

tell application "OmniWeb"
    set myInfo to GetWindowInfo
    return item 1 of myInfo
end tell