2013-02-12 68 views
4

有了这个,我可以生成一个类似按钮指定的协议:d为什么没有这个Facebook的脚本标签

<script>(function(d, s, id) { 

    var js, fjs = d.getElementsByTagName(s)[0]; 

    if (d.getElementById(id)) return; 

    js = d.createElement(s); js.id = id; 

    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; 

    fjs.parentNode.insertBefore(js, fjs); 

}(document, 'script', 'facebook-jssdk'));</script> 

,但它为什么不

js.src =“一些协议: //connect.facebook.net/en_US/all.js#xfbml=1" ;

为什么没有具体的协议?

+0

的可能的复制[它是有效的,以取代HTTP:在

0

未指定协议可确保在启动请求中使用的相同协议也可用于脚本文件的请求。

如果经由HTTP请求

,该脚本将通过HTTPS被加载,等等。

0

当省略协议,浏览器根据当前页面的协议假定任一httphttps。这允许包含外部资源而不用担心安全警告。

当然,为了这个工作,外部资源的路径必须在当前页面的协议中可用。

+0

是的,这使得脚本无法在位于文件中的页面中正确运行: //或其他协议。该死.. – Ser1 2013-02-12 12:43:54

+0

@ Ser1是的,但你可以手动重写它。虽然我不确定为本地页面生成Like按钮是否有意义。 – Boaz 2013-02-12 12:46:20

+0

我试着将它重写为'http:// connect.facebook.net/en_US/all.js#xfbml = 1'我仍然无法得到我喜欢的按钮..我想在all.js中有另一个src没有协议。只是在启动前测试一个网站,但我认为我不应该担心像按钮:) – Ser1 2013-02-12 12:50:57

0

为什么没有具体的协议?

因为省略URL的方案部分告诉客户端使用他已经使用的协议,他已经使用请求将此资源嵌入到的文档中。

在这种情况下,它允许浏览器选择http://或https://,具体取决于文档本身是通过“普通”HTTP或HTTPS加载的。

+0

<3谢谢!得到它 – Ser1 2013-02-12 12:41:26

1

这是一个叫做protocol-relative URL的小技巧,它可以“节省一些头痛”。

+0

luv的链接! <3 – Ser1 2013-02-12 12:45:13