One Click install for Safari Extensions

∥☆過路亽.° 提交于 2019-12-13 13:30:40

问题


When a user downloads a plugin firefox (for example) the plugin installation begins as soon as the download has completed.

Is it possible to achieve the same thing in safari? i.e. user clicks link to download plugin, once it has downloaded it automatically begins the installation.


回答1:


I don't think this is possible to do on any other domain except extensions.apple.com.

I've done some extensive testing on this and the safari.installExtension() method is only present if the domain matches extensions.apple.com (probably controlled by the browser, similar to how certain Chrome APIs only shows up inside of extensions themselves).

I tested this theory by going to the JS file itself and opening the JS console: https://extensions.apple.com/home/scripts/extensionInstall.js

After that JS file has loaded, type typeof(safari.installExtension) in the JS console and it should return "function". Notice that it exists on a non-HTML page, meaning it's being provided by the browser (since this script doesn't execute, nor has the code in it to provide this method).

I tried doing this on other sites and it doesn't exist: "undefined".

I also had a crazy thought that it just needs extensions as the subdomain, so I tested it on http://extensions.joomla.org too, no dice. I can't seem to find an extensions sub-domain that's SSL though. That may work, but I seriously doubt it as the method appears to be regulated to only show up when on Apple's specific extensions sub-domain.




回答2:


No solution for that here, but maybe this can help?

In apple extension gallery at https://extensions.apple.com the extensions do install in one click, and i wanted to achieve the same in a website of mine, so i went and checked their JS source code.

A javascript file there defines a "ExtensionOneClick" Object (https://extensions.apple.com/home/scripts/extensions.js).

A method is dedicated to installing extensions:

// href : path to the extension ".safariextz" file
// id   : com.whatever.myextension-<safaridevelopper10charsid>

safari.installExtension(id, href);

I tried to replicate this on my website, but i get "safari is undefined", so I guess a site specific hack in Safari is helping here?



来源:https://stackoverflow.com/questions/11375154/one-click-install-for-safari-extensions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!