在我的网站上,我有:
...
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
...
Run Code Online (Sandbox Code Playgroud)
上面的脚本是用于动态加载其他资源的Google脚本.(例如Google图表API)
这有99.99%的时间.但是,我刚刚找到一个客户,由于某些原因让他的公司限制访问google.com.
因此,我的网站只是抛出了一个JavaScript错误.
现在我知道如何处理,我可以检查window.Google是否存在.但我的问题是
"解决这个问题的标准方法是什么?"
换句话说,如果你嵌入第三方JavaScript,你如何最好地处理他们的JS不可用?
注意:非常重要
您无法在本地或在Intranet上托管图表代码.
请参阅Google的常见问题解答:https://developers.google.com/chart/interactive/faq#localdownload
我可以在本地或在Intranet上下载和托管图表代码吗?
抱歉; 我们的服务条款不允许您下载,保存或托管Google.load或Google.visualization代码.
我有一个页面,其中正在加载jquery +其他js:
<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.jeditable.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/corner.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.form.js" type="text/javascript"></script>
<script src="/eiv/javascripts/validationdate.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我正在加载标签如下:
<%if (tabnum == 1) {%>
<script type="text/javascript">
$(document).ready(function(){
$("#tabs").tabs();
$("#tabs ul li a").corner('7px top');
var $tabs = $('#tabs').tabs();
$tabs.tabs('select', 0);
dateValidation();
changeOption();
deleteConfirmation();
});
</script>
<%} else if (tabnum==2) {%>
<script type="text/javascript">
$(document).ready(function(){
$("#tabs").tabs();
$("#tabs ul li a").corner('7px top');
var $tabs = $('#tabs').tabs();
$tabs.tabs('select', 1);
changeOption();
deleteConfirmation();
});
</script>
<%}%>
Run Code Online (Sandbox Code Playgroud)
这validationdate.js是一个矿山建造的js,检查日期和其他东西.它有这个作为第一行:
document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
Run Code Online (Sandbox Code Playgroud)
问题: 这是否正在生产中..这个页面出错并给出了JS错误.这会导致选项卡无法点击.这个错误间歇性地发生,我似乎无法在我的机器上重现它.两台机器都使用IE浏览器.错误也发生在Firefox中,虽然很少JS错误的东西没有出现在Firefox中.我甚至还有没有显示任何JS错误的firebug.
我怀疑错误即将到来,因为 …
从这个问题中得到一点: 使用谷歌托管的jQuery的最佳方式,但回到我在Google上的托管库失败
所以我可以检测JQuery CDN是否已关闭并允许这样做:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/Script/jquery-1.7.2.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
Run Code Online (Sandbox Code Playgroud)
如何加载为jquery.validate,我该如何做同样的事情:
<script type="text/javascript" language="javascript" src="http://ajax.microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js"></script>
Run Code Online (Sandbox Code Playgroud) 我最近参与了一个项目; 在开始提到的第一件事之一是不使用谷歌CDN或谷歌网络字体 - 没有解释.
我一直使用CDN和Google Web字体而不是font-face; 这些谷歌开发者选项有什么问题吗?什么可能很麻烦?
使用原始资源(EG.直接来自jQuery网站)或font-face是更好的做法吗?
如果没有从CDN加载时刻js,我想创建一个后备.我在网上找不到任何有用的资源,也没有在momentjs.com上找到 Moment js是否存在.
这是我的代码:
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
<script>
// If moment.js is not loaded, use the fallback
if () {
document.write('<script src="assets/plugins/moment/moment.min.js"><\/script>');
}
</script>
Run Code Online (Sandbox Code Playgroud) 哪种方式更好?要链接到http://ajax.googleapis.com上的jQuery Pack .或者下载相应的文件并在本地链接?有关系吗?链接是否有可能消失?或者是否有可能在线更新文件,最好链接到它?好奇.
谢谢,特蕾西
有多少百分比的浏览器可能已经加载了Google的JQuery缓存版本?
我想知道我的页面加载到"普通"浏览器的速度有多快.我的页面需要JQuery和JQuery UI.我相信大多数浏览器可能已经从Google的服务器缓存了JQuery.这是真的?JQuery UI的数字是多少?
任何您的索赔证明都会有所帮助.
此外,对于Jquery UI:Google的Jquery UI有哪些组件?它有所有这些还是只有几个(可排序等等)?
此外,我认为它大约180 kb.我应该使用它还是应该在jqueryui.com上创建一个可能更小的custom.ui.min?
无论如何从CDN加载jQuery-UI主题,但有本地回退?类似于这里的javascript后备大纲?谷歌托管CDN退回
我一直在使用以下代码在我的所有项目中加载JQuery.我从http://html5boilerplate.com/上抓了它.有这种技术的广泛disussion 这里.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="jquery-1.7.1.min.js"><\/script>');</script>
Run Code Online (Sandbox Code Playgroud)
这个代码工作得很好,一旦我把它放在interwebs上似乎很快,但是当我.html在本地打开我的文件时,每次刷新需要大约10秒.通常我厌倦了并改变代码如下:
<!-- uncomment when going live
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="jquery-1.7.1.min.js"><\/script>');</script>-->
<!-- remove following line when going live -->
<script src="jquery-1.7.1.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?我觉得我不应该得到超慢的加载时间,但它会在注释掉这些行时自行解决.
我正在使用jqgrid开发ASPNET MVC 4项目.
在那里,ASPNET MVC 4默认放置
@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)
在_Layout.cshtml文件的末尾.
现在,我有一个使用jqgrid的Index.cshtml
<script type="text/javascript">
jQuery("#ajaxGrid").jqGrid({
Run Code Online (Sandbox Code Playgroud)
所以我必须包括jqgrid脚本
@section jqgridScripts
{
<script src="@Url.Content("~/Scripts/jqgrid/i18n/grid.locale-en.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script>
}
Run Code Online (Sandbox Code Playgroud)
但在使用.jqgrid之前,我需要加载jqgrid脚本,而这需要加载jquery脚本,因此,jquery脚本需要位于_Layout.cshtml文件的顶部而不是末尾.
根据最佳实践,需要在文件末尾加载jquery脚本,但是如果我这样做,在Index.cshtml文件中它不知道jQuery是什么.
我不能把jqquery脚本和jqgrid脚本放在_Layout.cshtml文件的底部,因为上面是使用jqgrid脚本的Index.cshtml文件内容.
是否有一些我缺少的东西,以便能够在结束时放置jQuery并仍然能够在视图中使用jquery的东西?
谢谢!吉列尔莫.
jquery ×6
cdn ×4
javascript ×3
jquery-ui ×2
ajax ×1
asp.net-mvc ×1
css ×1
download ×1
fallback ×1
fonts ×1
google-cdn ×1
hyperlink ×1
jqgrid ×1
momentjs ×1
pack ×1
validation ×1