检查Safari浏览器是否可以安装扩展程序

时间:2016-09-07 13:10:17

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

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

在Chrome中,如果可以向用户提供Chrome扩展程序,则Javascript表达式typeof chrome.webstore.install !== 'undefined'会恢复正常。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

据我所知,您可以在自己的Safari网站上完成所有工作:

1。检测到浏览器是Safari。

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

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

或者,您也可以使用处理次要浏览器的more complex browser detection脚本之一。

2。可选择检测Safari的版本

如果您需要特定版本的Safari中提供的功能,您可以选择使用浏览器版本检查。

#!/bin/bash
git merge HEAD &> /dev/null
result=$?
if [ $result -ne 0 ]
then
  echo "Merge in progress."
  echo "Please resolve any conflicts and complete the merge!"
elif [ -d .git/rebase-merge -o -d .git/rebase-apply ]
then
  echo "Rebase in progress."
  echo "Please resolve any conflicts and complete the rebase!"
else
  # Original commit script goes here. E.g.:
  git add --all
  git commit -m "auto commit"
fi

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

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

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

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

加成:

要处理用户已安装扩展程序的情况,您网站上有detect whether your Safari extension is installed种方法。