繁体   English   中英

如何检测已添加的搜索提供程序?

[英]How to detect search provider which has already been added?

我正在尝试构建一个功能,例如每当用户访问我的网站时,我都添加了一个选项,以在其浏览器中添加默认搜索提供程序。 我已经为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>

用户单击安装按钮,脚本将运行,并且该站点已添加到搜索提供程序列表中。 如果用户刷新或再次访问我的网站,则此功能再次出现。 我应该如何检测它已被添加,以便每当用户下次访问我的网站时它都不会出现。

如果有人可以帮助我,那将是很大的帮助。 谢谢 :)

不幸的是,您不能使用IsSearchProviderInstalledAddSearchProvider 它们在Chrome浏览器中被视为无操作对象,并且不应该执行HTML标准所描述的任何操作,更多信息请参见: https : //www.chromestatus.com/feature/5672001305837568 现在AddSearchProvider工作在Firefox,但IsSearchProviderInstalled始终返回0。您可以去尝试它https://google.com并添加以下代码: external.IsSearchProviderInstalled("https://www.google.com"); 在控制台中。

相反,您应该尝试将搜索插件自动发现添加到您的网页中。 为此,只需将<link>元素添加到<head>

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

此处的更多信息: https : //developer.mozilla.org/zh-CN/Add-ons/Creating_OpenSearch_plugins_for_Firefox#Autodiscovery_of_search_plugins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM