2011-08-12 3 views
2

Safari拡張機能が既にインストールされているかどうかを検出する方法はありますか? https://extensions.apple.comには、拡張機能が既にインストールされている場合にインストールリンクを「インストール済み」に更新するため、何らかの方法があります。しかし、私は彼らのやり方を理解できません。私はタイプ「SafariExtensionGalleryController」のオブジェクトに戻ってそれをトレースしてきましたが、それは私の知る限り得るようだ。Safari拡張機能がインストールされているかどうかを検出する

Appleはちょうど自分の作品?? ...

ロストための拡張システムに特殊なフックを入れませんでした

Thxを、ジョエル

+0

私がそのページに行くと、インストールされている拡張機能でもインストールリンクは変わりません。 – dan8394

+0

あなたは正しいです...瞬間。先週、拡張機能のURLにアクセスしたとき、公式の拡張機能(ワンクリックで動作する拡張機能)は、リンクがインストールされていればインストール済みと更新されました。今では、3回のクリックでインストールする必要があるため、拡張機能のいずれも正式ではありません。私の推測では、それは一時的ですが、Appleのサイトにあります。 – JayRu

答えて

1

拡張子の著者である場合は、独自の拡張機能がインストールされている場合、その後、あなたは検出することができます。私は単に私がそのページがロードされたときにスキャンされ、私のウェブサイトに目に見えない文字列を注入。文字列が挿入されている場合は、拡張機能がインストールされている必要があります。

identifier.js

if (window.top === window) 
{ 
    //detect if the extension has been installed and disable "Install" button if that's the case 
    if (document.title === "YOUR PAGE TITLE") //we don't want to inject the string into any website, just ours 
    { 
     var p = document.createElement("noscript"); 
     var texto = document.createTextNode("Extension Installed"); 
     p.appendChild(texto); 

     document.body.appendChild(p); 
    } 
} 

私はAppleがこの拡張に応じて、拡張機能のウェブサイトを変更するには、そのプログラムでSafariがウェブサイトを表示するために使用するのWebViewを使用して、内部的にはJavaScriptのスクリプトを実行すると、Safariのコードで返さない疑いがあります。

希望すると便利です。

+0

'document.title'を使って現在のWebページがあなたのサイトにあるかどうかを調べるのではなく、' document.URL'を使います。どのウェブページでもタイトルを何でも設定できます。 – breakingobstacles

0

サーバー側の拡張機能を検出するには、ドメイン内にコンテンツスクリプトを使用してセッションCookieを挿入するのが最も簡単な方法です。

ChromeとFirefoxでは、HTTPヘッダーを挿入できますが、SafariのAPIでは許可されていません。

クッキーに関する問題:ユーザーが内線をアンインストールすると、セッションが終了したとき(ブラウザを閉じる)にのみ通知されます。

関連する問題