shorthand http:// as // for script and link tags? anyone see / use this before?
the question is as follows:
if you take a look at any site using addthis (the share button)...
once you float over the addthis button, and all of the required assets load take a look at the body of the document using firebug or chrome inspector (not the source, the actual document that is sitting on your screen... the object inspector). you will notice that the additional assets loaded automatically by addthis look something like this:
<script type="text/javascript" src="//s7.addthis.com/static/r07/menu78.js"></script>
<link rel="stylesheet" type="text/css" href="//s7.addthis.com/static/r07/widget61.css" media="all">
what is this short handing of http:// in the above tags?
has anyone used this before? does it have an 'official' name? how cross browser compatible is this method of short handing the http protocal?
yes, i understand this will break things as far as crawlers / seo go, but i am thinking about starting to use this in situations that are inaccessible (mainly, js handled stuff) to bots.
good or bad idea?
Solution 1:
Starting a URL with //
means "Use a different server but keep the same scheme"
So if you load //example.net/script
from https://example.com/
it will get https://example.net/script
, while if you load it from http://example.com/
it will get http://example.net/script
.
If, on the other hand, you load it from file://c:/Users/You/Documents/test.html
then it will probably not resolve to anything useful. Make sure you do development with a local web server (and access http://localhost/
) if you use this syntax.
This is a standard part of URIs, it well supported, and is usually known as "scheme relative URIs"
Solution 2:
To build upon Quentin's answer, these URLs are commonly called protocol-less URLs (although, as Nick points out in the comments, the proper name is scheme-less).
Also, be wary of the case where you use them in local development (i.e. linking to jQuery from an HTML page that you load from your hard disk, through the file://
protocol). In such scenarios, all outbound links will be treated as local ones - //jquery.com/
will refer to file://jquery.com/