5

我正在尝试编写一个 AppleScript,其中包括获取 Firefox 中每个打开网页的 URL。

在 Safari(和 Chrome)中,这非常简单:

tell application "Safari" to return URL of every tab in every window

但是,在我看来,Firefox 没有提供真正的 AppleScript 支持,例如获取任何选项卡或窗口的 URL。当我将“Firefox”和“AppleScript”这两个术语放在一起搜索时,我大多会收到 Firefox 错误请求,要求恢复 AppleScript 支持,最后一次更新是在 2010 年或 2011 年(例如thisthis)。

那么,我是否认为 Firefox 不再提供任何适当的 AppleScript 支持?我意识到有一些半解决方法,例如在 AppleScript 中模拟键命令,但这些对我的目的来说并不实用。

4

4 回答 4

8

要查看 Firefox 响应的所有 AppleScript 命令,请启动 AppleScript Editor,选择菜单File > Open Dictionary...,然后选择 Firefox 应用程序。

你会发现你所期待的:Firefox 不提供任何有用的 AppleScript 命令。

于 2013-07-25T03:17:46.733 回答
2

Firefox 3.5 及更早版本支持这一点,即使该命令在字典中不可见:

tell application "Firefox"
    get «class curl» of window 1
end tell

Firefox 3.6 移除了这个功能,到现在(Firefox 22.0)它还没有恢复。

于 2013-07-25T16:10:11.427 回答
0

Firefox 团队从 2002 年开始就一直致力于此

同时,您可以使用 UI 编程来获取最前面的选项卡的 URL

tell application "System Events" to tell process "Firefox"
    get value of text field 1 of combo box 1 of toolbar 2 of group 1 of front window
end tell

适用于 68.0.2 版本,但可能会在未来的 Firefox 更新中被破坏。

于 2019-08-27T02:55:23.367 回答
0

这适用于 Firefox。不过,这并不是那么漂亮:)

tell application "Firefox"
    activate
    tell application "System Events" to keystroke "1" using command down
    set firstTitle to name of front window
    
    set tabList to {}
    set myTitle to "__f_o_o_b_a_r__" -- some random initial name
    set counter to 0 -- make sure that loop ends
    
    repeat until (counter > 100 or myTitle is equal to firstTitle)
        tell application "System Events" to key code 121 using control down
        tell application "System Events" to keystroke "l" using command down
        tell application "System Events" to keystroke "c" using command down
        delay 0.1
        set myTitle to (name of front window)
        copy (the clipboard) to the end of the |tabList|
        set counter to counter + 1
    end repeat
end tell

tabList

在使用全局快捷方式搜索选项卡时,我使用了类似的方法。

于 2021-03-10T14:48:11.567 回答