我想要一个向Safari用户提供浏览器扩展的网页。此网页已经为Google Chrome和Firefox用户提供了扩展程序。
在Chrome中,如果可以向用户提供Chrome扩展程序,则Javascript表达式typeof chrome.webstore.install !== 'undefined'
会恢复正常。
在Firefox中,它是typeof InstallTrigger !== 'undefined'
。
如果可以安装Safari扩展程序,是否会有类似的表达式返回true?
答案 0 :(得分:1)
Apple强烈鼓励扩展程序开发人员submit their extensions to the Safari Extensions Gallery。
如果您从自己的网站分发扩展程序,则用户的安装过程不是最理想的,并且用户必须同意多个“信任”对话框。
据我所知,您可以在自己的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脚本之一。
如果您需要特定版本的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,则此检查将不准确。
链接到扩展程序包,鼓励用户下载它,并提供手动安装过程的说明(以及理想的屏幕截图)。
(这是1Password在their extension install page上所做的。)
加成:
要处理用户已安装扩展程序的情况,您网站上有detect whether your Safari extension is installed种方法。