【问题标题】:checking a safari browser for the ability to install an extension检查 Safari 浏览器是否能够安装扩展程序
【发布时间】:2017-01-15 04:47:26
【问题描述】:

我想要一个为 Safari 用户提供浏览器扩展的网页。该网页已经为 Google Chrome 和 Firefox 用户提供了扩展。

在 Chrome 中,如果可以为用户提供 Chrome 扩展程序,则 Javascript 表达式 typeof chrome.webstore.install !== 'undefined' 会返回 true。

在 Firefox 中,它是 typeof InstallTrigger !== 'undefined'

如果可以安装 Safari 扩展,是否有类似的表达式会返回 true?

【问题讨论】:

    标签: javascript google-chrome-extension safari cross-browser safari-extension


    【解决方案1】:

    Apple 强烈鼓励扩展程序开发人员使用submit their extensions to the Safari Extensions Gallery

    如果您从自己的站点分发扩展程序,则用户的安装过程不是最理想的,并且有多个用户必须同意的“信任”对话框。

    据我所知,您可以从您自己的网站上为 Safari 完成的所有操作是:

    1。检测浏览器是Safari。

    虽然浏览器检测不是 100% 有效,并且首选基于特征的检测,但在这种情况下,您可以通过对 Safari 的简单、相当有效的测试来跟进您对 Chrome 和 Firefox 的基于特征的有效检测(关键是检查navigator.vendor):

    var isSafari = /Apple Computer/.test(navigator.vendor) && /Safari/.test(navigator.userAgent);
    

    或者,您也可以使用more complex browser detection 脚本之一来处理小型浏览器。

    2。可选择检测 Safari 的版本

    如果您需要特定版本的 Safari 中可用的功能,您可以选择在此之后进行浏览器版本检查。

    function getSafariVersion() {
        var index = navigator.userAgent.indexOf("Version");
        if (index == -1) return;
        return parseFloat(navigator.userAgent.substring(index+"Version".length+1));
    }
    

    注意:如果用户更改了浏览器的 User-Agent,则此检查将不准确。

    3。提供 .safariextz 供下载,并要求用户打开它。

    链接到扩展包,鼓励用户下载它,并提供手动安装过程的说明(最好是屏幕截图)。

    (这就是 1Password 在 their extension install page 上所做的事情。)


    奖金:

    为了处理用户已经安装了您的扩展程序的情况,有多种方法可以从您的网站detect whether your Safari extension is installed

    【讨论】:

    • 您的答案的相关部分是“检测浏览器是 Safari/检测版本”。这就是您没有解释在实践中如何做的确切部分(问题是关于那个)。请对此进行扩展。
    • 添加了示例(和替代方法的链接)。
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多