尝试在Google(或其他Google托管的lib)上加载托管jQuery的好方法,但如果Google尝试失败,请加载我的jQuery副本?
我不是说谷歌是片状的.有些情况下谷歌副本被封锁(例如在伊朗).
我会设置一个计时器并检查jQuery对象吗?
这两份副本的危险是什么?
并不是真的在寻找"只使用谷歌"或"只使用自己的"等答案.我理解这些论点.我也理解用户可能会缓存Google版本.我正在考虑一般的云回退.
编辑:这部分补充......
由于Google建议使用google.load加载ajax库,并在完成后执行回调,我想知道这是否是序列化此问题的关键.
我知道这听起来有点疯狂.我只想弄清楚它是否可以以可靠的方式完成.
更新:jQuery现在托管在微软的CDN上.
戴夫沃德说,
它并不完全是轻量级读取,但RFC 3986的4.2节提供了完全限定协议(HTTP或HTTPS)的完全限定URL.当省略URL的协议时,浏览器将使用基础文档的协议.
简而言之,这些"无协议"URL允许这样的引用在您尝试使用的每个浏览器中工作:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js一开始看起来很奇怪,但这种"无协议"URL是引用通过HTTP和HTTPS提供的第三方内容的最佳方式.
这肯定会解决我们在HTTP页面上看到的一堆混合内容错误 - 假设我们的资产可通过HTTP和HTTPS获得.
这是完全跨浏览器兼容吗?还有其他警告吗?
可能重复:
URI以两个斜杠开头......它们的行为如何?
绝对URL省略协议(方案),以便将当前页面的一个简写保存
为//用于脚本和链接标记?有人看过/使用过吗?
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
为什么URL以两个正斜杠开头?这是速记http://吗?
HTML是使用最广泛的语言(至少作为标记语言)尚未获得应有的信誉.
考虑到它已经存在了这么多年,诸如FORM/INPUT控件之类的东西仍然保持不变,没有添加新的控件.
至少从现有功能来看,您是否知道任何不为人所熟知但非常有用的功能.
当然,这个问题是这样的:
JavaScript的
隐藏功能隐藏的CSS
功能隐藏C#的
功能隐藏的VB.NET
功能隐藏的Java
隐藏功能隐藏的功能经典ASP
隐藏的ASP.NET
功能隐藏的Python
功能隐藏的TextPad
功能隐藏的Eclipse功能
不要提及HTML 5.0的功能,因为它在工作草案中
请为每个答案指定一个功能.
最近我看到像这样工作的代码块:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
根据RFC 2396(URI语法)和RFC 2616(HTTP 1.1),这些以两个斜杠开头的URI是有效的,但不幸的是,RFC并没有真正解释它们.
任何人都可以指向一个解释浏览器将如何/应该/如何处理这些URI的资源?
我看到了//somepage.com/resourceurl格式.例如:
<img src="//remotesite.com/image1.jpg" />
Run Code Online (Sandbox Code Playgroud)
这一点是,如果当前页面(定义img标签的页面)正在使用http,则通过http进行对远程站点的请求.如果它是https - 它是https.这消除了浏览器未完全加密页面的警告.
我的问题是 - 这种URL格式是否可以安全地用于所有浏览器.它是一个标准吗?
方案相对URL(网络路径引用)是我刚刚发现的 - 你没有指定URL的方案,它从当前上下文中选择它.
例如:
如果当前方案是HTTPS或不是,则<img src="//domain.com/img.png" />解析为.https://domain.com/img.pnghttp://domain.com/img.png
这似乎是一种非常简单的方法来解决在SSL页面上调用外部脚本或图像的麻烦问题,而不会引起页面上某些内容不安全的可怕错误.
好处似乎很明显,但我似乎无法找到的是关于此的大量信息,并且想知道是否有人有任何关于方案相对URL(好或坏)的经验或参考?
虽然我试图发现是否有任何浏览器导致问题(我已经成功使用IE6-8,Chrome和Firefox),我也有兴趣了解是否有任何人有使用此功能的不同经验语言.例如,如果你Response.Redirect在ASP中发布一个方案相对URL ,它会起作用吗?
我们是否有理由在链接属性中包含http/ httpsprotocol href?
如果不做就没关系了:
<a href="example.com">my site</a>
Run Code Online (Sandbox Code Playgroud) 这是StackOverflow上经常讨论的问题,这意味着什么:
<script src="//cdn.example.com/somewhere/something.js"></script>
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,如果您通过HTTPS访问它,您将自动获得HTTPS,而不是那个可怕的"此页面上的不安全元素"警告.
但为什么要使用协议相对的URL呢?为什么不直接在CDN URL中使用HTTPS?毕竟,如果您决定通过HTTPS加载某些部分,HTTP页面没有理由抱怨.
(这更适用于CDN;几乎所有CDN都具有HTTPS功能.而您自己的服务器可能不一定具有HTTPS.)
为什么像谷歌和Facebook这样的服务使用document.createElement('script')而不仅仅是<script>?
Google Analytics摘要:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
Run Code Online (Sandbox Code Playgroud)
可以写成:
<script src="//www.google-analytics.com/ga.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
和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_GB/all.js#xfbml=1&appId=xxx";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
Run Code Online (Sandbox Code Playgroud)
可以简化为:
<script src="//connect.facebook.net/en_GB/all.js#xfbml=1&appId=xxx"></script>
Run Code Online (Sandbox Code Playgroud)
我知道有一些安全的玩法,但除此之外,我不明白为什么我们不应该使用HTML5?