2013-10-26 61 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> 
相关问题