2017-05-29 7 views
0

ユーザーが自分のサイトにアクセスするたびに機能を構築しようとしています。ブラウザにデフォルトの検索プロバイダを追加するオプションが追加されました。私は、Firefoxのため、このようなコードを書かれている -既に追加されている検索プロバイダーを検出するにはどうすればよいですか?

<script> 
    $(document).ready(function() { 
    var isFirefox = typeof InstallTrigger !== 'undefined'; 

    if (isFirefox === false) { 
     $("#set-susper-default").remove(); 
     $(".input-group-btn").addClass("align-search-btn"); 
     $("#navbar-search").addClass("align-navsearch-btn"); 
    } 

    if (window.external && window.external.IsSearchProviderInstalled) { 
     var isInstalled = window.external.IsSearchProviderInstalled("http://susper.com"); 

     if (!isInstalled) { 
      $("#set-susper-default").show(); 
     } 
    } 

    $("#install-susper").on("click", function() { 
     window.external.AddSearchProvider("http://susper.com/susper.xml"); 
    }); 

    $("#cancel-installation").on("click", function() { 
     $("#set-susper-default").remove(); 
    }); 
}); 
</script> 

ユーザーは、インストールボタンをクリックするとスクリプトが実行され、サイトが検索プロバイダーのリストに追加されます。ユーザーがリフレッシュしたり、再び自分のサイトに来た場合、この機能が再度使用されます。どのように私はそれを検出する必要がありますので、ユーザーが次回に私のサイトに来るたびに表示されないように追加されています。

誰かが私を助けてくれると助けになるでしょう。ありがとう:)

+0

をあなたはIsSearchProviderInstalled'は常に 'false'をを返す'意味しますか? – Halcyon

+0

はい@Halcyon :) –

答えて

0

残念ながらIsSearchProviderInstalledAddSearchProviderを使用することはできません。 Chromeではno-opsとみなされ、HTML標準で記述されているように何もしません。詳細はこちら:https://www.chromestatus.com/feature/5672001305837568。今のところAddSearchProviderはFirefoxで動作しますが、IsSearchProviderInstalledは常に0を返します。https://google.comに移動して、このコードをコンソールに追加すると試すことができます:external.IsSearchProviderInstalled("https://www.google.com");

代わりに、検索プラグインの自動検出をウェブページに追加するようにしてください。そのためには、単に<head><link>要素を追加します。ここではそれについて

<link rel="search" 
     type="application/opensearchdescription+xml" 
     title="searchTitle" 
     href="pluginURL"> 

さらに詳しい情報:https://developer.mozilla.org/en-US/Add-ons/Creating_OpenSearch_plugins_for_Firefox#Autodiscovery_of_search_plugins

関連する問題