以下は、Safari App Extension を作成して、Safari で開いたウェブページに指定したスタイルシートを自動で適用する方法です。
Safari の機能拡張からもカスタムスタイルシートを設定することができますが、ページごとに異なるスタイルシートを指定することができません。
代わりに Safari App Extension を使用して、ページごとにカスタムスタイルシートを設定することができます。
実行環境は macOS です。
テスト用に未署名の機能拡張を許可する設定を行う
Safari App Extension を作成・使用するためには開発者の署名が必要となります。
XCode で開発者の設定をしていない場合は、未署名の機能拡張を使用することを Safari の設定で許可する必要があります。
許可は Safari を起動するたびに実行する必要があります。
Safari の開発者メニューを表示する
- Safari を起動する
- メニューから Safari >> 環境設定... を選択
- 「詳細」タブを選択
- 「メニューバーに"開発"メニューを表示」にチェックを入れる
未署名の機能拡張を許可する
- メニューから 開発 >> 未署名の機能拡張を許可する を選択
- パスワードの入力を求められるので入力する
XCode を起動する
XCode をインストールしていなければインストールし、起動します。
プロジェクトを作成する
事前に決めておくこと
- プロダクト名 (Product Name)
- 組織識別名 (Organization Identifier)
- プロジェクトを保存する場所
手順
- メニューから File >> New >> Project... を選択
- macOS >> Other >> Safari Extension App をクリック
- [ Next ] をクリック
- Product Name: user defined css for www.example.com
- Organization Identifier: SafariAppExt
- [ Next ] をクリック
- ファイルダイアログが表示されるので、プロジェクトを保存する場所を設定
- [ Create ] をクリック
CSS ファイルを追加する
- 左側のペインにて、<プロダクト名> Extension フォルダを右クリック
- New File... を選択
- macOS >> User Interface >> Empty を選択
- [ Next ] をクリック
- Save As: style.css
- [ Create ] をクリック
- [ Use .css ] をクリック
- style.css がエディタで選択されるので下記の style.css を入力
- Menu >> File >> Save を選択
p {
color: green;
}
設定ファイルに style.css の設定を追加
- 左側のペインにて、<プロダクト名> Extension フォルダの
Info.plist
ファイルをクリック -
NSExtension
の左にある三角形 ▶︎ をクリックして開く -
NSExtension
の右にあるプラス (+) をクリックする - テキスト入力モードになるので、
SFSafariStyleSheet
と入力 -
SFSafariStyleSheet
のType
欄をArray
に変更する -
SFSafariStyleSheet
の右にあるプラス (+) をクリック - 追加されたエントリー (
Item 0
) のType
欄をDictionary
に変更する - 追加されたエントリー (
Item 0
) の左にある三角形 ▶︎ をクリックして開く - 追加されたエントリー (
Item 0
) の右にあるプラス (+) をクリックする - テキスト入力モードになるので、
Style Sheet
と入力 - 右側の
Value
欄にstyle.css
と入力
Safari App Extension を使用するドメインの設定
- 先ほど
style.css
の設定を追加したInfo.plist
を選択 -
SFSafariWebsiteAccess
の左にある三角形 ▶︎ をクリックして開く -
Allowed Domains
の左にある三角形 ▶︎ をクリックして開く -
Item 0
のValue
欄にある*.webkit.org
を削除 - 代わりに
*.example.com
を入力 - Menu >> File >> Save を選択
ビルドと実行
- 左上の ▶︎ ボタン (Build and then run the current scheme) をクリック
- アプリケーションが起動するので、[ Open in Safari Extensions Preferences... ] をクリック
- Safari の機能拡張設定画面が開くので、作成した機能拡張にチェックを入れる
再ビルドの際の注意点
再度ビルドを実行する際は、事前に "Clean Build Folder" を実行します。
実行しないと、Safari の拡張機能のページに表示されないようです。
- Menu >> Product >> Clean Build Folder を選択
動作確認
- http://www.example.com を開く
- パラグラフの文字色が緑になっていることを確認
片付け
"Clean Build Folder" を実行すると、拡張機能は登録解除されます。
- Menu >> Product >> Clean Build Folder を選択
参考情報
補足
XCode でファイル名の右に M や A が表示される
ファイルを Commit すると消えます。