如何在Safari的每个窗口的每个选项卡中获取所有打开的URL?

时间:2016-09-05 09:00:57

标签: swift macos cocoa safari applescript

我正在使用NSAppleScript告诉Safari返回所有打开的标签的URL,如下所示:

let script = NSAppleScript.init(source: "tell application \"Safari\" to get URL of every tab of every window")
var errorInfo: NSDictionary?
let eventDescriptor:NSAppleEventDescriptor = (script?.executeAndReturnError(&errorInfo))!
print(eventDescriptor.stringValue)

上面的回报为零。告诉返回当前URL确实有效。

"tell application \"Safari\" to return URL of front document as string"

如何在每个窗口的每个标签页中获取所有打开的URL?

1 个答案:

答案 0 :(得分:0)

结果将是一个NSDescriptor,表示字符串列表的列表。你要么:

  1. 在返回之前将列表强制转换为AppleScript中的字符串,使用合适的文本项分隔符,然后您可以将该字符串拆分为Swift中的字符串列表(作弊),
  2. 使用几个嵌套循环来自行解压缩列表描述符(繁琐)或
  3. 疏忽NSAppleScript并使用AppleScript-ObjC bridge代替(设置有点繁琐,但到目前为止最简单,最有能力使用)。