为什么我的javascript文件没有在IE7中“一致”加载?

时间:2009-03-24 16:34:14

标签: internet-explorer javascript asp.net

在似乎是随机发生的情况下, javascript文件未加载

我相信这个诊断是正确的,因为a)我有代码要检查,b)我已经完成了代码,并且c)当使用这些文件中的函数时,我得到“'myfunction'未定义”错误。 / p>

有时这不会发生一个小时,有时它会在我每次加载页面时发生,有时它会在我加载页面时发生。似乎每当我确定一致的行为,所以我可以重复并诊断它,它会改变!

有人知道可能导致这种情况的原因吗?

我正在使用:

  • IE版本7.0.5730.11(有& 卸载IE8 Beta)
  • VS2008

现在,似乎只发生在我的同事和我的开发环境中。

有一个脚本似乎比其他任何脚本都缺少。这是脚本标记。

<script language="javascript" 
        type="text/javascript" 
        src="js/Ajax.Utility.js?<%= ConfigurationManager.AppSettings["WebApp.JavaScript.FileVersion"].ToString() %>"></script>

评估为

<script language="javascript" 
        type="text/javascript" 
        src="js/Ajax.Utility.js?090324a"></script>

版本查询字符串参数似乎没有任何影响,因为我在更改它之后立即遇到了问题并且没有问题。

9 个答案:

答案 0 :(得分:6)

我之前遇到过这个问题两次。它始终是Javascript代码中的语法错误。很可能是一个额外的支架或一个缺少的支架。所有其他浏览器都通过,但IE7不是。

试验和错误(删除代码块和代码块)使我找到了解决方案。

我希望这会有所帮助: - )

答案 1 :(得分:5)

如果给出的答案没有成功 -

IE7默认情况下不从本地文件加载Javascript。通常,您将获得信息栏下降并指示。您必须单击栏并选择“允许阻止的内容”,然后IE7将重新加载启用了Javascript的页面。

此行为是一致的。但是,如果某些系统禁用信息栏的显示,现在您可以了解问题所在。

我的建议是添加&lt; noscript&gt;标记在HTML页面顶部,并使用CSS使用粗体红色背景对其进行样式化,以便您不会错过它。 StackOverflow使用这种技术。

这样一来,由于安全原因,你肯定会知道Javascript是否没有加载。

答案 2 :(得分:4)

对于任何遇到同样问题的人来说,只是一个FYI。

这从未得到解决,但我现在认为它与Visual Studio开发服务器有关,我怀疑如果我使用IIS会发生这种情况。不幸的是,我不再参与该项目了,所以我无法测试它。

答案 3 :(得分:4)

我遇到了与原始海报完全相同的问题,并尝试了许多无法解决的解决方案。

我最后通过更新运行apache服务器的计算机上的日期和时间来修复它。它已经关闭了几天(在VM中间歇性运行的结果)

希望这有助于某人。

答案 4 :(得分:2)

而不是src="js/AjaxTry.Utility.js"试试这个:

src="<% ResolveUrl("~/path/from/root/to/js/Ajax.Utility.js") %>

答案 5 :(得分:1)

另一个想法是:你是否在测试之间刷新浏览器缓存?除非阻止这样做,否则浏览器完全可以自由地缓存脚本 - 通常你只会注意到编辑脚本和样式表和图像

答案 6 :(得分:1)

您是否使用Fiddler之类的工具检查过该.js文件的调用是对服务器还是浏览器缓存进行检查,并且浏览器实际上正在接收文件,而不是获取文件404还是一些这样的?

您应该在实际调用相关方法的页面上进行检查 - 因为您的路径是相对URL(即不以“/”开头),是否有可能是您从中调用它的页面是不是在js文件夹下面,但也许在它旁边?

想象一下来自网站根目录的网站结构:

/page1.aspx
/folder/page2.aspx
/js/Ajax.Utility.js

如果page1和page2都调用了.js文件,那么只有page1实际上可以正确使用它来检索 - page2将有效地寻找:

/folder/js/Ajax.Utility.js

答案 7 :(得分:1)

我遇到了与IE7相同的问题,问题在于我使用'super'作为属性,这是一个保留关键字,IE7默默地没有加载页面。

答案 8 :(得分:1)

大多数浏览器似乎可以容忍其他逗号,例如在对象属性列表的定义中:

var obj = {prop1: 'value',
           prop2: 'value',};

Internet Explorer不接受最终的逗号。每当遇到此问题时,总会被证明是由于逗号引起的。此外,IE调试器不会标记源问题,它只是从未正确加载的文件中判断缺少的定义。