2013-10-26 96 views
11

我試圖使用Skype的JavaScript API,並注意到一些瘋狂:如果我的頁面是HTTP,一切工作正常(所有的Skype按鈕和Skype:協議hrefs ),但是一旦我將它移動到HTTPS,Chrome,iPad和iPhone就會中斷它。凱斯和點:Skype URI在Chrome,iPad,iPhone上不能在HTTPS下工作

呼叫按鈕,在這裏工作: http://developer.skype.com/skype-uris/skype-uri-tutorial-webpages#uriTJS_Generator

呼叫按鈕不起作用這裏: https://developer.skype.com/skype-uris/skype-uri-tutorial-webpages#uriTJS_Generator

這是對自己的網站,它是沒有workie ...

燦有人建議我應該採取一些系列的雨舞來解決這個問題嗎?祈禱Skype的神?我只是一個凡人。

+1

只是胡亂猜測:你是從API加載的資源是通過HTTP獲取的,有的瀏覽器時,該網站本身就是使用不取HTTP元素HTTPS(出於安全原因)。您可能可以配置它。 –

+0

無論是'http'還是'https',他們都要求在Chrome 30中爲我啓動Skype程序。 – MackieeE

+0

是的 - 您可以通過http或https獲取skype-uri.js,問題是當我通過http HTTPS,當你點擊Skype按鈕它說你沒有安裝Skype(當我清楚的時候),但是當我在HTTP下切換時 - 它神奇地再次正常工作。 –

回答

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),所以瀏覽器拒絕加載它。 Skype SDK中的JavaScript可能使用window.open或類似的東西,因此在代碼中查找可能會提出一個解決方案。

也許你可以適應這個醜陋的workaround

4

點擊腳本創建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> 
相關問題