以编程方式访问Web浏览器选项卡|斯威夫特3 [英] Access web browser tabs programmatically | Swift 3

查看:99
本文介绍了以编程方式访问Web浏览器选项卡|斯威夫特3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以访问Safari或Google Chrome的打开的标签?可以使用URL,也可以使用标签标题或两者兼而有之?

Is it possible to access the open tabs of Safari or Google Chrome? A URL would be good or the title of the tab or both?

该应用程序的目的是,用户可以指定一些网站并为其添加标签,然后该应用程序将测量在这些网站上花费了多少,该应用程序将通过可访问性被允许.

The purpose of the app then the user could specify some websites and add labels to them and the app would measure how much is spent on those websites, the app would be allowed through accessibility.

推荐答案

使用AppleScript获取标题和每个选项卡的URL.

Use an AppleScript to get the title and the URL of each tab.

您可以在Swift中使用NSAppleScript运行AppleScript.

You can use NSAppleScript in Swift to run an AppleScript.

示例( Safari )

let myAppleScript = "set r to \"\"\n" +
    "tell application \"Safari\"\n" +
    "repeat with w in windows\n" +
    "if exists current tab of w then\n" +
    "repeat with t in tabs of w\n" +
    "tell t to set r to r & \"Title : \" & name & \", URL : \" & URL & linefeed\n" +
    "end repeat\n" +
    "end if\n" +
    "end repeat\n" +
    "end tell\n" +
"return r"

var error: NSDictionary?
let scriptObject = NSAppleScript(source: myAppleScript)
if let output: NSAppleEventDescriptor = scriptObject?.executeAndReturnError(&error) {
    let titlesAndURLs = output.stringValue!
    print(titlesAndURLs)
} else if (error != nil) {
    print("error: \(error)")
}


AppleScript 返回一个字符串,如下所示:


The AppleScript return a string, like this:

Title : the title of the first tab, URL : the url of the first tab
Title : the title of the second tab, URL : the url of the second tab
Title : the title of the third tab, URL : the url of the third tab
....


示例( Google Chrome )

let myAppleScript = "set r to \"\"\n" +
    "tell application \"Google Chrome\"\n" +
    "repeat with w in windows\n" +
    "repeat with t in tabs of w\n" +
    "tell t to set r to r & \"Title : \" & title & \", URL : \" & URL & linefeed\n" +
    "end repeat\n" +
    "end repeat\n" +
    "end tell\n" +
"return r"
var error: NSDictionary?
let scriptObject = NSAppleScript(source: myAppleScript)
if let output: NSAppleEventDescriptor = scriptObject?.executeAndReturnError(&error) {
    let titlesAndURLs = output.stringValue!
    print(titlesAndURLs)
} else if (error != nil) {
    print("error: \(error)")
}


更新:


Update:

这是带注释的AppleScript.

Here's the AppleScript with the comments.

您可以在"脚本编辑器"应用程序中运行它.

You can run it in the "Script Editor" application.

set r to "" -- an empty variable for appending a string
tell application "Safari"
    repeat with w in windows -- loop for each window, w is a variable which contain the window object
        if exists current tab of w then --  is a valid browser window
            repeat with t in tabs of w -- loop for each tab of this window, , t is a variable which contain the tab object
                -- get the title (name) of this tab and get the url of this tab
                tell t to set r to r & "Title : " & name & ", URL : " & URL & linefeed -- append a line to the variable (r)
                (*
                 'linefeed'  mean a line break
                 'tell t' mean a tab of w (window)
                 '&'  is for  concatenate strings, same as the + operator in Swift
                *)
            end repeat
        end if
    end repeat
end tell
return r -- return the string (each line contains a title and an URL)

这篇关于以编程方式访问Web浏览器选项卡|斯威夫特3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆