2016-08-22 147 views
0

我们使用HTML5开发电话应用程序,这意味着我们的电话本地协议是file://。我们正试图将Opentable的小部件包含在我们的页面中。但他们的小部件JS链接看起来像:从本地协议强制使用Javascript协议中的http协议

<script type='text/javascript> src='//secure.opentable.com/widget/reservation/loader?rid=27763&domain=com&type=standard&theme=standard&lang=en&overlay=false&iframe=true'></script> 

注意,它与

//secure.opentable.com 

开始因此,这将让我们的文件:自动//协议。但即使我改变它

https://secure.opentable.com 

它仍然不能在本地工作。我注意到,在他们的JS源代码中,他们仍然使用“//”,它仍然会得到我们的“file://”协议。

以下是错误我更改链接到https://secure.opentable.com/后...

无法加载资源:该请求的URL没有这个 服务器上找到。

文件://www.opentable.com/widget/reservation/canvas摆脱= 27763 &域= com的&类型=标准&主题=标准& LANG = EN &覆盖=假& insideiframe =真

我注意到,在控制台,它看起来像:

enter image description here

我怎样才能使之成为当地的ENV工作ironment?

谢谢!

+0

当您尝试“https:// secure.opentable.com”时会得到什么错误?它应该像那样工作。 – Barmar

+0

@Barmar我把错误放在我的问题中。看看黄色突出显示的部分。谢谢您的帮助! – jackhao

+1

错误来自他们的脚本。它创建一个iframe,并且它们不会将协议放在iframe的源代码中,因此它使用与您的页面相同的协议。你需要联系他们,看看是否有办法让它做正确的事情。 – Barmar

回答

1

也许这将工作:

$(document).ready(function() { 
    $("iframe[src^='//www.opentable.com']").attr('src', function(i, oldsrc) { 
     return "https:" + oldsrc; 
    }); 
); 

它会等到文档准备好,这应该是新的IFRAME被添加到DOM后,然后将它与一个与https:协议取代其src

+0

是的,我结束了同样的事情!感谢寿。 – jackhao

+0

我只是很生气,我没有想到这一两天前,当别人问了类似的问题。 – Barmar