Last update: 2010-02-16
Firefox で開いたサイトの表示問題やアクセス不能といった場合に「Firefox のタブに表示しているページを Safari で開く」AppleScript を使ってパッと渡すという作業が大変重宝していたのだが、困ったことに Firefox が 3.5 へとバージョンアップしてから(正しくは trunk の Minefield/3.1a1pre からだが)、下記 AppleScript が使用できなくなった。
tell application "Firefox"
set theURL to «class curl» of window 1
end tell
tell application "Safari"
activate
open location theURL
end tell
この困った Bug は Bug 516502 - Re-add AppleScript support for getting the current URL 辺り。
で、これと同じことは鳥獣保護区の macaw さんが ブログで公開されている Firefox で開いているページを Safari で開く userChrome.js 用スクリプトを使うとコンテキストメニューから呼び出せるため、上述の AppleScript よりも便利なのだが、userChrome.js の導入が必須だ。ここで躓いてしまう人もいるかもしれない。
んなわけで、お手軽に使える AppleScript から実行できないものかと考えていて、ふと思いついたのがロケーションバーの URL をコピーして Safari に渡すって方法。なんとローテクな方法だ!
ところが、書いてみた AppleScript だと何故か一つ前のクリップボード内容が Safari へ送られてしまって上手くいかない。コピー結果を Propaty に書き出して処理をずらしてみたりしたがダメ、タイマーを使おうと思ったらアプリケーション形式でないとダメと悩むことしばらく、何か良い方法はないものかと Web の中をウロウロしていたら回避方法をハケーンしました。
tell application "Firefox" to activate
tell application "System Events"
keystroke "l" using {command down}
keystroke "c" using {command down}
end tell
delay 0.5 -- これが無ければ正常に動作しない
the clipboard
set currentURL to (the clipboard) as text
tell application "Safari"
activate
open location currentURL
return
end tell
Firefox 3 (on Mac) still not supported ?のinsomnislacker 氏のコメントで書かれているスクリプトを試してみたところ、上手く動いたので Safari に URL を渡す部分を追記。要するに Firefox で開いているタブのロケーションバーにフォーカスを移動して URL をクリップボードにコピー、それを Safari に渡して表示する。肝は「delay 0.5」と実行時間をずらしている個所で、これがなければ正常に動かない。
かなりローテクなスクリプトだが、これ以外に解決方法は見つけていないため、Firefox の修正でもない限り唯一の方法なのかな。もし解決方法をご存知の片がいらっしゃれば、是非ご教示ください。
スクリプトを使ってみたい方で、使用方法が分からない場合は拙サイトの AppleScript の使い方 などを参照くだされ。
調子に乗って Mac OS 10.6 Snow Leopard 以上の環境で利用可能な Firefox のサービスメニュー用 Autometor ワークフローも作ってみた。これは Firefox のメニューから実行できるので、なんとなく純正機能の様にも感じる辺りがステキかもしれないww
試してみたい方は ThisURL2Safari.zip をダウンロードして解凍、ご自身のホーム→ライブラリの中の Service フォルダの中に入れれば Firefox 3.5 以上のメニューのサービスから利用できる。(Service フォルダはデフォルトでは存在しないので手動で作るか zip を解凍したフォルダの中にある Service フォルダごとコピーしても吉)なお、ファイル名称はお好きなものに変更すると見易いかも。
ただし、サービスからの実行は「選択…よっこらっしょ…実行」という様な感じで行われる。なぜか分からないけど。そんなデメリットもあるが、サービスメニューではショートカットも割り当てられるため、AppleScript と何方を取るかは悩ましいところw