Skype URI не работают под HTTPS на Chrome, iPad, iPhone

Я пытаюсь использовать API-интерфейс Skype javascript и замечаю некоторые сумасшествия: если моя страница является HTTP, все работает нормально (все кнопки skype и skype: протокол hrefs), но как только я переведу его на HTTPS, он разрывается в Chrome, iPad и iPhone. Случай и точка:

Кнопки вызова работают здесь: http://developer.skype.com/skype-uris/skype-uri-tutorial-webpages#uriTJS_Generator

Кнопки вызова НЕ РАБОТАЮТ здесь: https://developer.skype.com/skype-uris/skype-uri-tutorial-webpages#uriTJS_Generator

Это на их собственном сайте, и он не работает...

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

Ответ 1

При щелчке script создается iframe и добавляется src= "skype: echo123; +16505550123? call", а затем, как mb21, возникает ошибка или происходит "ограничительная политика безопасности".

function a(s, v, t) {
    var u = true;
    window.onblur = function () {
        u = false
    };
    var r = document.getElementById(v);
    if (r !== null) {
        r.src = s         //here error happens....
    }
    setTimeout(function () {
        if (u) {
            alert(Skype.installSkypeMsg);
            Skype.tryAnalyzeSkypeUri("redirect", t);
            window.location = Skype.SkypeClientDownloadUrl
        }
    }, 2000)
}

Как просто использовать:

<a onclick="window.location='skype:echo123;+16505550123?call';return false;" href="">link</a>

Ответ 2

Я думаю, что это ошибка (или довольно ограничительная политика безопасности) в Chrome (и других браузерах). В консоли разработчика Chrome я получаю:

[blocked] The page at https://developer.skype.com/skype-uris/skype-uri-tutorial-webpages#uriTJS_Generator ran insecure content from skype:echo123;+16505550123?call.

Он обрабатывает skype:echo123;+16505550123?call как URL-адрес и считает, что он не защищен (т.е. не https), поэтому браузер отказывается его загрузить. Вероятно, JavaScript в SDK Skype использует window.open или что-то подобное, поэтому копание в их коде может вызвать решение.

Возможно, вы можете адаптировать этот уродливый обходной путь?