私は最初の Safari 拡張機能 (非常に単純なもの) を作成中ですが、いくつかの問題に遭遇しました。拡張機能は、ネイティブ フィード ハンドラをバイパスして http:// URI にリダイレクトしようとする単一の挿入されたスクリプトに要約されます。これまでのところ、私の問題は2つあります。
- 「ホワイトリスト」が期待どおりに機能していません。すべてのフィードは「feed://」プロトコルで表示されるため、ホワイトリストに「feed://*/*」としてキャプチャしようとしましたが (ブラックリストには何もありません)、リクエストになってしまいます理解できないループ。「 http://*/*」と「https://*/* 」のブラックリスト値を設定すると、すべてが期待どおりに機能します。
- 挿入されたスクリプトから自分の設定にアクセスする方法がわかりません。スクリプトは
beforeload
イベント ハンドラーを作成しsafari.extension.settings
ますが、ドキュメントに示されているパスを使用して設定にアクセスできません。
Apple のドキュメントには、スクリプトから設定を使用できないことを示すものは見つかりませんでした。拡張機能は非常に新しい機能であるため、Google でさえ返される関連する結果は限られており、それらのほとんどは公式ドキュメントからのものです。
私は何が欠けていますか?
更新
したがって、境界線がひどいため、ドキュメントが不完全であることを願っていますが、設定について少し学びました。インジェクション スクリプトから、SafariExtensionSettings
オブジェクトが利用できないことが判明しました。インジェクション スクリプトはオブジェクトにしかアクセスできSafariContentExtension
ませんが (これはまったく役に立ちません)、まったく同じ方法でエイリアス化されます ( safari.extension.settings
)--悪い考えです。インジェクションスクリプトのドキュメントに記載されているように:
重要: 挿入されたスクリプト内から safari.extension を使用する場合、SafariExtension クラスに対処していません。SafariContentExtension クラスに対処しています。
設定にアクセスできるグローバル HTML ファイルと通信するには、メッセージング システムを使用する必要があります。ちょっとおかしな話ですがglobal.html
、設定を取得するファイルにメッセージが送信されており、その方法がわかり次第、インジェクション スクリプトにメッセージを送り返します。
ドキュメントが読み込まれる前にすべての作業を行っているため、メッセージを送り返すために見つけたすべてのメソッドは、私が持っていないページ オブジェクトに依存しています。