はてなブックマークは好きだけどあまり目にしたくないエントリもあるので、iPhone/iPadのSafari用NGフィルタ機能拡張を作った。
apps.apple.comChromeやFirefoxの拡張はすでにいくつか存在する。
しかし普段使っているiOSのSafariは作り方がやや特殊なせいかまだなかったので自作した。 といっても基本的にはWeb Extensionsなので、Chrome拡張の作り方がそのまま流用できる。
iOSのSafariの場合、ネイティブアプリにバンドルされる形で機能拡張がインストールされるのでXcodeが必要になるが、New > Project > Safari Extention Appでプロジェクトを作って各種js、manifest.jsonを修正したらほとんどの実装は完了した。
雑感
- はてなブックマーク、ヘッダのエントリだけdivのclassが違ったり遅延して表示されるエントリがあったりと、ユーザースクリプトだけでカバーするのは結構厳しそうな感じがした
- 遅延表示エントリについては
chrome.tabs.onUpdated.addListenerでも消せなかったので、画面を表示してから3秒間は走査しつづけるという力技で対応した
- 遅延表示エントリについては
- キーワードの保存には
chrome.storage.local.setを使っている。- content.jsからネイティブアプリに通信することは可能なので、SwiftData+iCloud同期で端末間の設定を共有することはできると思うがそこまでやっていない
- iPhoneとiPadでポップアップのレイアウトが違いすぎる

- 「divでmarginとmin-widthを設定して〜」みたいなことを久々にやった
- デバッグがややめんどい
- 機能拡張そのものの話ではないけれど、ネイティブアプリの画面から設定画面を開くためのURLスキームを探すのがめんどくさかった
*1:シミュレーターだとポップアップのレイアウトがおかしくなる


