我正在使用BetterTouchTool在MacBook Pro上自定义触摸栏。到目前为止,我已经使用了下面的脚本来显示在Chrome中打开的标签页列表。我想在页面名称旁边显示收藏夹图标。
if application "Google Chrome" is running then
tell application "Google Chrome"
try
set windowCount to number of windows
repeat with x from 1 to windowCount
set maxSize to 15
set tabcount to number of tabs in window x
repeat with y from 1 to tabcount
set tabName to title of tab 1 of window x
if length of tabName is greater than maxSize then
set tabName to text 1 thru (maxSize - 3) of tabName & "..."
end if
return tabName
end repeat
end repeat
on error
return ""
end try
end tell
else
return ""
end if
编辑1(答案后有新脚本)
if application "Google Chrome" is running then
tell application "Google Chrome"
set windowCount to number of windows
repeat with x from 1 to windowCount
set maxSize to 15
set tabcount to number of tabs in window x
repeat with y from 1 to tabcount
set tabName to title of tab 1 of window x
if length of tabName is greater than maxSize then
set tabName to text 1 thru (maxSize - 3) of tabName & "..."
end if
set tabIcon to execute of tab 1 of window x javascript ¬
"document.head.querySelector('link[rel~=icon]').href;"
return "{\"text\":\"" & (tabName) & "\",
\"icon_data\": \"base64_icon_data\",
\"icon_path\":\"" & (tabIcon) & "\",
\"background_color\": \"255,85,100,255\",
\"font_color\": \"100,200,100,255\",
\"font_size\": 10}"
end repeat
end repeat
end tell
else
return ""
end if
由于我是Applescript的新手,所以我可能遗漏了一些非常明显的东西。
答案 0 :(得分:0)
只要已将浏览器设置为允许它响应AppleScript事件并允许其在其浏览器选项卡中运行JavaScript,就可以使用少量JavaScript来检索网页的收藏夹图标。
在Chrome的特定窗口 tab y
中,对特定标签 window x
的引用,此代码相当可靠在将URL返回到网站的网站图标时
tell application id "com.google.Chrome"
execute in tab y of window x javascript ¬
"document.head.querySelector('link[rel~=icon]').href;"
end tell
它在网页的源文档中挑选出第一个<link>
标签,该标签具有名为rel
的属性,其值包含单词"icon"
。然后,它检索href
属性的值。在大多数情况下,这足够了。例如,此StackOverflow网页包含以下元素:
<link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d">
上面的AppleScript返回URL:
https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d
链接到该图像的:
会有一个奇怪的网站笨拙地使用"icon"
一词来引用收藏夹图标以外的其他内容;或使用一系列合成图像文件在一个图像上遮罩一个图像,这将导致AppleScript仅返回图标的一个组件(对于GitHub,其图标文件只是一个黑色正方形,并且图标的详细信息通过叠加的SVG蒙版应用)。遗憾的是,不会有一个 perfect 搜索参数始终返回100%准确的图像链接-即使隔离指向一个名为"favicon.ico"
的文件的URL也只能可靠地返回约占所有情况的一半,因为网站可以根据需要命名其图标。