AppleScript:按名称在 safari 中找到打开的选项卡并将其打开
AppleScript : find open tab in safari by name and open it
我正在寻找一种方法来确定网页是否从所有打开的选项卡中打开,如果是,请关注此选项卡。
我试过这段代码,但显然这根本不起作用。
set closeURLs to {"http://www.yahoo.com"}
repeat with theURL in closeURLs
tell application "Safari" to open (every tab of every window whose URL contains (contents of theURL))
end repeat
更新:我找到了:http://protips.maxmasnick.com/applescript-to-find-fastmail-tabs-in-safari
只需尝试找到 URL 包含搜索模式的选项卡,并捕获错误。
property checkURL : "yahoo"
try
tell application "Safari" to set theTab to first tab of window 1 whose URL contains checkURL
display dialog "That site is loaded"
on error
display dialog "That site is not loaded"
end try
我编写了一个快速的脚本,让您可以使用正则表达式来指定 url 的任何部分或选项卡的标题。它还会记住最后一个搜索词,还可以让您列出您获得的所有选项卡。 :) 你可以在这里找到它:MacScripter / How to effectively converting a list of list into a single list
HTH
在 Find Safari Tabs with AppleScript 找到了一个优秀的脚本。如果多个选项卡与用户输入文本匹配,它会显示匹配选项卡列表并允许用户 select 打开一个。
它需要几个小模组才能与 Mojave 一起使用,所以这里是更新后的代码:
set question to display dialog ("Find Safari tab whose name includes:") default answer ""
set searchpat to text returned of question
tell application "Safari"
--
-- *** Step 1. get a list of all tabs that match "searchpat" ***
set winlist to every window
set winmatchlist to {}
set tabmatchlist to {}
set tabnamematchlist to {}
repeat with win in winlist
if (count of tabs of win) is not equal to 0 then # ignore spurious windows with no tabs
set tablist to every tab of win
repeat with t in tablist
if (searchpat is in (name of t as string)) or (searchpat is in (URL of t as string)) then
set end of winmatchlist to win
set end of tabmatchlist to t
set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
end if
end repeat
end if
end repeat
--
-- *** Step 2. open the desired matching tab ***
if (count of tabmatchlist) = 1 then
set whichtab to (item 1 of tabnamematchlist)
my openTab(whichtab)
else if (count of tabmatchlist) = 0 then
display notification "No matches"
else
set whichtab to choose from list of tabnamematchlist with prompt "The following tabs match, please select one:"
if whichtab is not equal to false then
my openTab(whichtab)
end if
end if
end tell
on openTab(whichtab)
tell application "Safari"
set AppleScript's text item delimiters to "."
set tmp to text items of (whichtab as string)
set w to (item 1 of tmp) as integer
set t to (item 2 of tmp) as integer
set current tab of window id w to tab t of window id w
set index of window id w to 1
-- this code is an essential work-around to activate a specific window ID in Mojave
tell window id w
set visible to false
set visible to true
end tell
end tell
end openTab
我正在寻找一种方法来确定网页是否从所有打开的选项卡中打开,如果是,请关注此选项卡。
我试过这段代码,但显然这根本不起作用。
set closeURLs to {"http://www.yahoo.com"}
repeat with theURL in closeURLs
tell application "Safari" to open (every tab of every window whose URL contains (contents of theURL))
end repeat
更新:我找到了:http://protips.maxmasnick.com/applescript-to-find-fastmail-tabs-in-safari
只需尝试找到 URL 包含搜索模式的选项卡,并捕获错误。
property checkURL : "yahoo"
try
tell application "Safari" to set theTab to first tab of window 1 whose URL contains checkURL
display dialog "That site is loaded"
on error
display dialog "That site is not loaded"
end try
我编写了一个快速的脚本,让您可以使用正则表达式来指定 url 的任何部分或选项卡的标题。它还会记住最后一个搜索词,还可以让您列出您获得的所有选项卡。 :) 你可以在这里找到它:MacScripter / How to effectively converting a list of list into a single list
HTH
在 Find Safari Tabs with AppleScript 找到了一个优秀的脚本。如果多个选项卡与用户输入文本匹配,它会显示匹配选项卡列表并允许用户 select 打开一个。 它需要几个小模组才能与 Mojave 一起使用,所以这里是更新后的代码:
set question to display dialog ("Find Safari tab whose name includes:") default answer ""
set searchpat to text returned of question
tell application "Safari"
--
-- *** Step 1. get a list of all tabs that match "searchpat" ***
set winlist to every window
set winmatchlist to {}
set tabmatchlist to {}
set tabnamematchlist to {}
repeat with win in winlist
if (count of tabs of win) is not equal to 0 then # ignore spurious windows with no tabs
set tablist to every tab of win
repeat with t in tablist
if (searchpat is in (name of t as string)) or (searchpat is in (URL of t as string)) then
set end of winmatchlist to win
set end of tabmatchlist to t
set end of tabnamematchlist to (id of win as string) & "." & (index of t as string) & ". " & (name of t as string)
end if
end repeat
end if
end repeat
--
-- *** Step 2. open the desired matching tab ***
if (count of tabmatchlist) = 1 then
set whichtab to (item 1 of tabnamematchlist)
my openTab(whichtab)
else if (count of tabmatchlist) = 0 then
display notification "No matches"
else
set whichtab to choose from list of tabnamematchlist with prompt "The following tabs match, please select one:"
if whichtab is not equal to false then
my openTab(whichtab)
end if
end if
end tell
on openTab(whichtab)
tell application "Safari"
set AppleScript's text item delimiters to "."
set tmp to text items of (whichtab as string)
set w to (item 1 of tmp) as integer
set t to (item 2 of tmp) as integer
set current tab of window id w to tab t of window id w
set index of window id w to 1
-- this code is an essential work-around to activate a specific window ID in Mojave
tell window id w
set visible to false
set visible to true
end tell
end tell
end openTab