在<script>的源代码中使用//

Dan*_*eam 14 javascript url https http

我想知道是否有人在使用古老的http/https JavaScript <script>hack时有任何资源,证据或个人经验:

<script src="//someserver.com/js/script.js"></script>
Run Code Online (Sandbox Code Playgroud)

有没有人遇到任何这些浏览器(IE 5.5 +,FF2 +,Chrome,Opera 9 +,Safari 3+)的问题?有人有过成功的故事吗?

Dan*_*llo 24

所有现代浏览器都会理解这种格式,包括IE 6.(不确定IE 5.5).

实际上,这不是一个黑客,而是一个完全有效的URI语法,根据RFC 3986:第4.2节.因此,我说你很高兴.

  • 您是否将IE6称为现代浏览器?大声笑!+1编辑:该死的,没有选票:( (2认同)

Wil*_*III 9

我可以指出你到底在想什么.这是一个RFC文档,所以你必须筛选很多噪音才能得到你想要的东西,但这是一个合法的功能(不是黑客)所谓的http客户端.

       b) If the embedded URL starts with a scheme name, it is
          interpreted as an absolute URL and we are done.

       c) Otherwise, the embedded URL inherits the scheme of
          the base URL.
Run Code Online (Sandbox Code Playgroud)

阅读更多:http://www.faqs.org/rfcs/rfc1808.html(搜索标题"解析相对URL"并查看下面的步骤1和2)或此处:http://freesoft.org/CIE/RFC /1808/18.htm

作为一个FYI,我在几乎所有的生产项目中都使用它 - 不仅仅用于JS资源,还用于链接到其他资源,如图像和CSS(更新:我不再使用它来链接样式表).

几乎无处不在.我已经在IE,FF,Opera,Chrome,Safari/Webkit中尝试了这一切,这些都可以追溯到多个以前的版本(如果适用).

例子:

  • <img src ="// static.example.com/img/token.png"/>
  • <script type ="text/javascript"src ="// static.example.com/js/jquery.js">

我发现这种方法比编写代码更清晰,以确定我们是否在http/https上.

唯一需要注意的是,你不应该将它用于样式表.

虽然以下是合法的并且有效:

  • <link rel ="stylesheet"type ="text/css"href ="// static.example.com/css/screen.css"media ="screen"/>

在IE中,上面会导致两个HTTP请求.目前,这会影响IE7,IE8和早期版本的IE9.

换句话说,方案相对URI应该/可以用于除样式表之外的所有资源.