例如,当用户下载插件Firefox时,一旦下载完成,插件安装就会开始。
是否可以在 safari 中实现相同的目标?即用户单击链接下载插件,一旦下载,它就会自动开始安装。
extensions.apple.com
之外,这在任何其他域上都是不可能的。
我已经对此进行了一些广泛的测试,并且 safari.installExtension() 方法仅在域与 extensions.apple.com 匹配时才存在(可能由浏览器控制,类似于某些 Chrome API 仅显示在扩展程序本身中的方式)。
我通过转到JS文件本身并打开JS控制台来测试这个理论:https://extensions.apple.com/home/scripts/extensionInstall.js
加载JS文件后,在JS控制台中键入typeof(safari.installExtension)
,它应该返回"function"
。请注意,它存在于非 HTML 页面上,这意味着它由浏览器提供(因为此脚本不执行,其中也没有提供此方法的代码)。
我尝试在其他网站上执行此操作,但它不存在:"undefined"
.
我也有一个疯狂的想法,它只需要扩展名作为子域,所以我也在 http://extensions.joomla.org 上测试了它,没有骰子。不过,我似乎找不到SSL的扩展子域。这可能有效,但我严重怀疑它,因为该方法似乎被规定仅在Apple的特定扩展子域上显示。
这里没有解决方案,但也许这会有所帮助?
在 Apple 扩展库中 https://extensions.apple.com 扩展确实只需单击一下即可安装,我想在我的网站上实现相同的效果,所以我去检查了他们的 JS 源代码。
那里的javascript文件定义了一个"ExtensionOneClick"对象(https://extensions.apple.com/home/scripts/extensions.js)。
专用于安装扩展的方法:
// href : path to the extension ".safariextz" file
// id : com.whatever.myextension-<safaridevelopper10charsid>
safari.installExtension(id, href);
我试图在我的网站上复制这个,但我得到"野生动物园未定义",所以我想 Safari 中特定于网站的黑客在这里有所帮助?