检测是否安装了 Safari 扩展

Jay*_*yRu 6 javascript safari

有没有办法通过 JavaScript 来检测 Safari 扩展是否已安装?https://extensions.apple.com有一些方法可以做到这一点,因为如果扩展已安装,他们会将安装链接更新为“已安装”。但是,我无法弄清楚他们是如何做到的。我已将其追溯到“SafariExtensionGalleryController”类型的对象,但据我所知。

苹果是否只是为了他们的东西而在扩展系统中添加了特殊的钩子?

丢失的...

谢谢,乔尔

Pri*_*yat 3

如果您是扩展的作者,那么您可以检测是否安装了您自己的扩展。我只是将一个不可见的字符串注入到我的网站中,然后在加载页面时对其进行扫描。如果字符串已被注入,则必须安装我的扩展,然后您可以对结果执行任何您喜欢的操作。

标识符.js

if (window.top === window) 
{
    //detect if the extension has been installed and disable "Install" button if that's the case
    if (document.title === "YOUR PAGE TITLE") //we don't want to inject the string into any website, just ours
    {
        var p = document.createElement("noscript");
        var texto = document.createTextNode("Extension Installed");
        p.appendChild(texto);

        document.body.appendChild(p);
    }
}
Run Code Online (Sandbox Code Playgroud)

我怀疑 Apple 使用 Safari 用来显示网站的 WebView 以编程方式执行此操作,然后在内部运行 javascript 脚本,根据 Safari 代码中返回的扩展来更改扩展网站。

希望这可以帮助!