[英]asp.net cdn and scriptmanager
我想了解CDN的使用。
1的jQuery:我已经读了很多帖子,以防使用本地文件后退
通用解决方案:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/ZZjquery.min.js"></script>
<script type='text/javascript'>
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/Scripts/jquery-1.11.1.min.js' type='text/javascript' %3E%3C/script%3E"));
}
</script>
对于jQuery Mobile
<script src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/ZZjquery.mobile.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.css" />
<script type='text/javascript'>
if (typeof $.mobile == 'undefined') {
document.write(unescape("%3Cscript src='/Scripts/jquery.mobile-1.4.4.min.js' %3E%3C/script%3E"));
document.write(unescape("%3Clink rel='/stylesheet' href='/Content/JQ/jquery.mobile-1.4.4.css' %3E%3C/script%3E"));
}
</script>
我也读了一个更好的解决方案:
void Application_Start(object sender, EventArgs e) {
// map a simple name to a path
ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
Path = "~/scripts/jquery-1.3.2.min.js",
DebugPath = "~/scripts/jquery-1.3.2.js",
CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min.js",
CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.js"
});
}
但是在这种情况下,如何从本地加载CSS文件?
2另一个问题是MicrosoftAjax和其他内容如何?
我像那样使用scriptmanger:
<asp:ScriptManager runat="server" EnableCdn="true" />
而且我没有在BundleCollection中包含所有WebForms和MicrosoftAjax脚本
但是,如果Microsoft Ajax CDN Fall会发生什么?
谢谢您的帮助
好的,我已经解决了我的问题
1个
在App_start中
Dim srd As New ScriptResourceDefinition()
srd.Path = "~/Scripts/jquery-1.11.1.min.js"
srd.DebugPath = "~/Scripts/jquery-1.11.1.min.js"
srd.CdnPath = "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"
srd.LoadSuccessExpression = "window.jQuery"
ScriptManager.ScriptResourceMapping.AddDefinition("JQ", srd)
...
然后在我的主页上
<asp:ScriptManager runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Name="JQ" />
<asp:ScriptReference Path="~/Scripts/InitMobile.js" />
<asp:ScriptReference Name="JQM" />
<asp:ScriptReference Name="JQT" />
<asp:ScriptReference Name="MyJQ" />
</Scripts>
</asp:ScriptManager>
<asp:ContentPlaceHolder runat="server" ID="ScriptContent" />
我的ScriptContent在我的页面中用于初始化一些jquery东西
对于css文件,我通过此代码测试是否存在他的类之一
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.css" />
<script type='text/javascript'>
try{
var hasstyle = false;
var fullstylesheets = document.styleSheets;
for (var sx = 0; sx < fullstylesheets.length; sx++) {
var sheetclasses = fullstylesheets[sx].rules || document.styleSheets[sx].cssRules;
for (var cx = 0; cx < sheetclasses.length; cx++) {
if (sheetclasses[cx].selectorText == ".ui-btn") {
hasstyle = true; break;
//return classes[x].style;
}
}
}
}
catch (err) { }
if (!hasstyle) {
document.write('<link href="<%= Page.ResolveClientUrl("~/Content/JQ/jquery.mobile-1.4.4.css") %>" rel="stylesheet" />');
}
</script>
2
脚本管理器独自工作。
例如。 这个输出
<script src="http://ajax.aspnetcdn.com/ajax/4.5/6/MicrosoftAjaxWebForms.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
(window.Sys && Sys.WebForms)||document.write('<script type="text/javascript" src="../Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"><\/script>');//]]>
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.