为什么Javascript有时不能加载到IE8中
我在母版页中加载了外部javascript文件 有时在IE8中,我的javascript文件无法正确加载,浏览器会抛出一系列javascript错误,说“无法识别对象” 如果我刷新页面,那么一切都很好。如果我点击一个链接,那么问题有时会再次出现 我的头中有元标记,用于在每次请求时清除缓存。我正在使用head.load库并行加载我的js文件 head.load库位于我的标题中,外部文件位于我的正文末尾 请记住,这个问题只发生在IE8中。所以我的问题是..鼓声请..是否有一个黑客,我可以使用它来确保我的javascript文件在每次为IE8加载页面时都正确加载 任何帮助都将不胜感激 根据要求进行更新为什么Javascript有时不能加载到IE8中,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我在母版页中加载了外部javascript文件 有时在IE8中,我的javascript文件无法正确加载,浏览器会抛出一系列javascript错误,说“无法识别对象” 如果我刷新页面,那么一切都很好。如果我点击一个链接,那么问题有时会再次出现 我的头中有元标记,用于在每次请求时清除缓存。我正在使用head.load库并行加载我的js文件 head.load库位于我的标题中,外部文件位于我的正文末尾 请记住,这个问题只发生在IE8中。所以我的问题是..鼓声请..是否有一个黑客,我可以使用它来确保
<head runat="server">
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
<meta http-equiv="EXPIRES" content="-1" />
<script type="text/javascript" src="scripts/js/head.load.min.js"></script>
</head>
<body>
<script type="text/javascript">
head.js("scripts/js/jquery-1.6.2.min.js");
head.js("scripts/js/jquery.cookie.js");
head.js("lib/gritter/jquery.gritter.min.js");
head.js("lib/fancybox/jquery.easing-1.3.pack.js");
head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js");
head.js("scripts/js/jquery.microaccordion.js");
head.js("scripts/js/jquery.stickyPanel.js");
head.js("scripts/js/guidely.js");
head.js("scripts/js/pto.js");
</script>
</body>
js(“scripts/js/jquery-1.6.2.min.js”);
js(“scripts/js/jquery.cookie.js”);
js(“lib/gritter/jquery.gritter.min.js”);
js(“lib/fancybox/jquery.easing-1.3.pack.js”);
js(“lib/fancybox/jquery.fancybox-1.3.4.pack.js”);
js(“scripts/js/jquery.microaccordion.js”);
js(“scripts/js/jquery.stickyPanel.js”);
js(“scripts/js/guidely.js”);
js(“scripts/js/pto.js”);
好的,问题似乎是head.load库如何在IE8中加载我的外部文件。如果我在加载head.load库之前加载jquery,然后在页面末尾并行加载外部;那么就没有javascript错误了。给自己上一堂关于javascript加载和IE8的小课
谢谢大家的意见
@弗雷德里克-我在一家拥有188000名员工的公司工作。如果用户的浏览器中安装了导致我的页面崩溃的加载项,那么我对此无能为力。我也不认为这个问题是由任何附加组件引起的。这就是IE8中处理head.load库的方式
<head runat="server">
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
<meta http-equiv="EXPIRES" content="-1" />
<script type="text/javascript" src="scripts/js/jquery.min.js"></script>
<script type="text/javascript" src="scripts/js/head.load.min.js"></script>
</head>
<script type="text/javascript">
head.js("scripts/js/jquery.cookie.js");
head.js("lib/gritter/jquery.gritter.min.js");
head.js("lib/fancybox/jquery.easing-1.3.pack.js");
head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js");
head.js("scripts/js/jquery.microaccordion.js");
head.js("scripts/js/jquery.stickyPanel.js");
head.js("scripts/js/guidely.js");
head.js("scripts/js/pto.js");
</script>
js(“scripts/js/jquery.cookie.js”);
js(“lib/gritter/jquery.gritter.min.js”);
js(“lib/fancybox/jquery.easing-1.3.pack.js”);
js(“lib/fancybox/jquery.fancybox-1.3.4.pack.js”);
js(“scripts/js/jquery.microaccordion.js”);
js(“scripts/js/jquery.stickyPanel.js”);
js(“scripts/js/guidely.js”);
js(“scripts/js/pto.js”);
查看“用法”一节中的页面,您将清楚地看到代码的错误:
//文件以并行方式加载并按到达顺序执行
head.js(“file1.js”);
head.js(“file2.js”);
head.js(“file3.js”)
您的脚本是并行加载的,并且是在到达时执行的,这对jquery上的DEP来说是非常糟糕的,如果您希望执行它们,请使用以下命令:
head.js("scripts/js/jquery-1.6.2.min.js",
"scripts/js/jquery.cookie.js",
"lib/gritter/jquery.gritter.min.js"),
"lib/fancybox/jquery.easing-1.3.pack.js",
"lib/fancybox/jquery.fancybox-1.3.4.pack.js",
"scripts/js/jquery.microaccordion.js",
"scripts/js/jquery.stickyPanel.js",
"scripts/js/guidely.js",
"scripts/js/pto.js");
您需要调用js并列出要加载的资源列表,而不是只调用js几次。可能需要引用您的
头。load
代码。抛出一系列错误,表示无法识别对象。
特殊性将有所帮助。@damaniel,您说此代码只在IE8中失败。您测试它的其他浏览器是什么?你在另一台机器上试过IE8吗?你能在安全模式下重现问题吗(-extoff
命令行选项)?@Shad-objects not recognized表示我在应用程序中使用的对象找不到应该加载的外部javascript文件,也不在IE8中的页面加载中。原谅我,我认为这是自我解释。@Frederic-我已经在IE9、Chrome、Safari和Firefox中进行了测试。不是opera,但我不关心opera,因为这是一个内部网站。我确实关心IE,因为这是我们的标准。我已经在其他10台机器上试过了。我正在使用IE8,在IE8中,有时似乎无法加载文件。我不知道你在安全模式下运行它是什么意思这是一个web应用程序嗨,我不想粗鲁,但你的回答可能会帮助解决你的特定问题,但它实际上并不能解决deps与headjs的一般问题,考虑阅读我的答案,也许会对你的评论。你所说的文档在一年前当我真的遇到这个问题时是不可用的,我非常确信加载外部文件逗号分隔不是头戴的一个特性。但是现在你能做到这一点很酷…谢谢你的输入。