Определить, установлено ли расширение Safari - PullRequest
2 голосов
/ 13 августа 2011

Есть ли способ через JavaScript определить, установлено ли расширение Safari? https://extensions.apple.com имеет некоторый способ сделать это, потому что они обновляют ссылку для установки на «Установлено», если расширение уже установлено. Однако я не могу понять, как они это делают. Я отследил его до объекта типа «SafariExtensionGalleryController», но это насколько я понял.

Apple поставила специальные крючки в систему расширений только для своих вещей?

Проиграл ...

Спасибо, Джоэл

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

Если вы являетесь автором расширения, то вы можете определить, установлено ли ваше собственное расширение.Я просто вставляю невидимую строку в свой веб-сайт, которую затем сканирую при загрузке страницы.Если строка была введена, мое расширение должно быть установлено, и тогда вы можете делать все что угодно с результатом.

identifier.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);
    }
}

Я подозреваюApple делает это программно, используя WebView, который Safari использует для отображения веб-сайтов, а затем запускает сценарии javascript для внутреннего использования, которые изменяют веб-сайт Extensions в зависимости от расширений, возвращаемых в коде Safari.

Надеюсь, это поможет!

0 голосов
/ 17 августа 2013

Чтобы определить расширение вашего сервера, самый простой способ - внедрить cookie-файл сеанса в свой домен с помощью скрипта содержимого.

В Chrome и Firefox вы можете добавить заголовок HTTP, но API вSafari не разрешает этого.

Проблема с файлами cookie: если ваш пользователь удалит расширение, вы заметите это только после завершения его сеанса (закрытие браузера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...