たまにMac用のWebブラウザが新登場しているのですが、ほとんどがGoogle Chromiumの互換といいますか、Chromiumのぱちも……といいますか、ほぼそのまま利用して作られていたりして、そのおかげで割としっかりとAppleScript対応機能が実装されたまま多数のWebブラウザがリリースされるというメリットがありました。
そんな中、たまたま見つけた「Orion」。Kagiが作ったWebブラウザとのことです。
AppleScriptから見ると、見たこともないような挙動をするWebブラウザです。
用語辞書の傾向はChrome系というよりも、Safariからとんがったコマンドを削除したようなたたずまい。
そして、必要な機能がついていなくて、割と「何これ?」と首をひねってしまうような出来です。
SafariもGoogle Chromeも、現在のタブを指し示すactive tabとかcurrent tabといった予約語でアクセスできるのですが、それができません。一応、Windowのプロパティとしてcurrent tabがあるのですが、このtabからIDとかIndexが取得できません。
do JavaScriptコマンドがあるので、ちょっとOrion固有の制限が加わりつつもJavaScriptコマンドを実行してWebのソースコードやテキストを取得できたりはしつつ、Webブラウザ上で選択中の要素を取得できなかったりします。
そして、肝心のdo JavaScriptコマンドでtabを指定する必要があるものの、current tabが何であるかを特定できず……仕方ないので、tabから取得できるURLをもとにどのtabがcurrent tabであるかを探し回ってなんとか。
windowの新規作成は、documentを作成することで行うことに。
人間らしく、というレベルはクリアできていないような気がします。久しぶりに、挙動がここまで不完全というか不自然なWebブラウザを見かけました。
AppleScript名:Orionのアプリのプロパティを取得.scpt |
tell application "Orion" properties –> {frontmost:false, class:application, name:"Orion", version:"0.99"} end tell |
AppleScript名:OrionでWindowのtitleを取得.scpt |
–同じURLを持つTabが複数あった場合には処理が破綻する tell application "Orion" tell window 1 set aURL to URL of current tab set tList to URL of every tab set tInd to retIndexNumInArray(tList, aURL) of me if tInd = 0 then return tell tab tInd –current tabのindexを求める方法がないのに、current tabを指定できないし、具体的にtab idを指定しないといけない set aRes to do JavaScript "document.querySelector(’title’).textContent;" end tell end tell end tell –1Dimensionリスト中のシーケンシャルサーチ on retIndexNumInArray(aList, aTarget) set aCount to 1 set hitF to false repeat with i in aList set j to contents of i if aTarget = j then return aCount set aCount to aCount + 1 end repeat if hitF = false then return 0 end retIndexNumInArray |
AppleScript名:Orionで新規URLをオープン(新規Tab).scpt |
tell application "Orion" open location "https://www.apple.com/jp" –新規Tabでオープン end tell |
AppleScript名:Orionの最前面のWindowのcurrent tabで新規URLをオープン.scpt |
tell application "Orion" set URL of current tab of window 1 to "https://www.apple.com/jp" end tell |
AppleScript名:Orionでcurrent tabに対してJavaScript実行してソースを取得.scpt |
–同じURLを持つTabが複数あった場合には処理が破綻する tell application "Orion" tell window 1 set aURL to URL of current tab set tList to URL of every tab set tInd to retIndexNumInArray(tList, aURL) of me if tInd = 0 then return tell tab tInd –current tabのindexを求める方法がないのに、current tabを指定できないし、具体的にtab idを指定しないといけない set aRes to do JavaScript "document.getElementsByTagName(’html’)[0].innerHTML" end tell end tell end tell –1Dimensionリスト中のシーケンシャルサーチ on retIndexNumInArray(aList, aTarget) set aCount to 1 set hitF to false repeat with i in aList set j to contents of i if aTarget = j then return aCount set aCount to aCount + 1 end repeat if hitF = false then return 0 end retIndexNumInArray |
AppleScript名:Orion、WindowのCloseができるが、makeできない.scpt |
tell application "Orion" close every window end tell |
AppleScript名:Orionで新規document作成.scpt |
tell application "Orion" make new document end tell |
AppleScript名:新規tabの作成.scpt |
tell application "Orion" tell window 1 make new tab with properties {URL:"http://www.apple.com/jp"} end tell end tell |