IE加载jquery.js不完整,导致"jQuery is undefined"

never_stop_2020 2017-03-16 08:47:16
最近做的一款基于server的网页,在Chrome浏览器中使用没有任何问题,但在IE或者Edge浏览器中打开就会出现""jQuery is undefined""的错误,通过BeyondCompare对比发现IE浏览器中加载的jQuery.js 文件并不完整,缺少了某些字符,可能正是由于缺少了这部分代码,导致JQuery.js没有被正确解析才会出现上述的错误!
html调用JQuery的方式如下:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="/js/jquery.js" type="text/javascript" charset="UTF-8"></script>
<script src="/js/ajax.js" type="text/javascript" charset="UTF-8"></script>
<script src="/js/femtomes.js" type="text/javascript" charset="UTF-8"></script>
<link rel="stylesheet" href="js/femt.css" type="text/css">
<script>
alert(typeof(jQuery));
</script>
</head>
如果完整加载了jQuery.js文件则alert(typeof(jQuery));会输出function,如果未完整加载则会提示undefined;

但如果将jQuery.js引用方式改为下面的方式则不会出现加载jQuery.js不完整的情况;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
由于页面需要工作在离线情况下,所以使用这种方式肯定是不合适的,但为什么会有这种情况表示很理解;

1.网上普遍的说法是编码格式的额问题,虽然IE默认的是GB2312的编码,但I也支持UTF-8,怎么就会出现由于编码格式导致加载的js文件不完整了,
2.另外其他的js文件也没有出现加载不完整的情况,唯独jQuery.js出现了,表示很奇怪,总不能是因为文件太大了吧?(80KB+,其他的文件只有几KB),但Chome上面加载却完全没问题,所以很是疑惑!?
3. 由于jQuery.js文件加载不完整的问题导致整个Server页面在IE中的功能不完整,导致有调用到jQuery的地方就会出现问题

因此希望有遇到类似问题的朋友能给指点一二,相互交流!
...全文
653 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdbjsh 2017-03-17
  • 打赏
  • 举报
回复
之前遇到过类似的问题,不知道跟你的情况一样不一样。 因为jQuery压缩后的文件实际是纯英文的。默认如果没有设置格式的话,实际是ascii编码,不是utf-8的。你强制用utf-8的方式加载就会出错。 解决方式,就是用文本编辑器把那个文件打开以下,强制转换为utf-8的格式,大小可能会大一点点。再用你的方式也引用就不会有问题了。
never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 9 楼 Navymk 的回复:
如果用CDN加载可以,说明代码本身和加载方式应该没有问题。 不知道你的IE什么版本,但是我用了这么多IE版本还没有出现过类似问题。 两个建议: 1、检查你的Server在HTTP输出方面是不是有什么问题 2、如果担心缓存,把地址后面加个后缀,比如:jquery.js?ver=1,再刷的时候改这个ver就行了。 3、更改你的script标签。为

<script type="text/javascript">
//
</script>
不用指定charset。这只是个建议。 祝你成功
好的,现在看来问题可能就在http这里了,等去公司再好好查查,非常感谢你的建议
never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 8 楼 Free_Wind22 的回复:
1. 只引用一个jQuery文件,删除其他js再试下 2. 清除一下缓存
都试过了还是不行
  • 打赏
  • 举报
回复
引用 2 楼 NewBirdyLuuuuu 的回复:
[quote=引用 1 楼 showbo 的回复:] 没装其他插件吧。是不是被插件拦截了,而且确保你jquery没被改过,是不是增加了中文内容什么的,导致乱码了加载不完整
没有装插件,只用了一个jQuery.js的库;jQuery是网上下的原版,没有改过,里面没有中文 内容。 在Chrome ,搜狗。FF浏览器上显示都是正常的,就在IE还有win10的Edge上会出现undefined的情况; 在IE上引用外部的jQuery库就没问题,但是从服务器上加载到IE上就会出现上面的问题,所以会不会是由于服务器编码格式和IE的编码格式不同导致的jQuery加载不完整呢?[/quote] 没碰到过,你本地路径怎么写的,贴出来看看
never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
没装其他插件吧。是不是被插件拦截了,而且确保你jquery没被改过,是不是增加了中文内容什么的,导致乱码了加载不完整
没有装插件,只用了一个jQuery.js的库;jQuery是网上下的原版,没有改过,里面没有中文 内容。 在Chrome ,搜狗。FF浏览器上显示都是正常的,就在IE还有win10的Edge上会出现undefined的情况; 在IE上引用外部的jQuery库就没问题,但是从服务器上加载到IE上就会出现上面的问题,所以会不会是由于服务器编码格式和IE的编码格式不同导致的jQuery加载不完整呢?
Navymk 2017-03-17
  • 打赏
  • 举报
回复
如果用CDN加载可以,说明代码本身和加载方式应该没有问题。 不知道你的IE什么版本,但是我用了这么多IE版本还没有出现过类似问题。 两个建议: 1、检查你的Server在HTTP输出方面是不是有什么问题 2、如果担心缓存,把地址后面加个后缀,比如:jquery.js?ver=1,再刷的时候改这个ver就行了。 3、更改你的script标签。为

<script type="text/javascript">
//
</script>
不用指定charset。这只是个建议。 祝你成功
2017-03-17
  • 打赏
  • 举报
回复
1. 只引用一个jQuery文件,删除其他js再试下 2. 清除一下缓存
never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 NewBirdyLuuuuu 的回复:]
[quote=引用 1 楼 showbo 的回复:]
没装其他插件吧。是不是被插件拦截了,而且确保你jquery没被改过,是不是增加了中文内容什么的,导致乱码了加载不完整


没有装插件,只用了一个jQuery.js的库;jQuery是网上下的原版,没有改过,里面没有中文 内容。
在Chrome ,搜狗。FF浏览器上显示都是正常的,就在IE还有win10的Edge上会出现undefined的情况;
在IE上引用外部的jQuery库就没问题,但是从服务器上加载到IE上就会出现上面的问题,所以会不会是由于服务器编码格式和IE的编码格式不同导致的jQuery加载不完整呢?[/quote]
没碰到过,你本地路径怎么写的,贴出来看看[/quote]
刚下载了WireShark抓了个包:
左边使用IE打开抓的,右边是用Chrome打开时抓的
发现IE的http的accept属性是 application/javascript 而chrome的没有显示,所以会不会是这里的问题?


never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 4 楼 wdbjsh 的回复:
之前遇到过类似的问题,不知道跟你的情况一样不一样。
因为jQuery压缩后的文件实际是纯英文的。默认如果没有设置格式的话,实际是ascii编码,不是utf-8的。你强制用utf-8的方式加载就会出错。

解决方式,就是用文本编辑器把那个文件打开以下,强制转换为utf-8的格式,大小可能会大一点点。再用你的方式也引用就不会有问题了。


试过了还是不行;
左右两边分别是从Edge控制台和Chrome控制台拷贝出来的jquery.js的代码,里面明显有n处不同,但看着又不像是乱码,左边的是不能用的,右边的就能用;所以很疑惑为什么会出现这种情况
never_stop_2020 2017-03-17
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 NewBirdyLuuuuu 的回复:]
[quote=引用 1 楼 showbo 的回复:]
没装其他插件吧。是不是被插件拦截了,而且确保你jquery没被改过,是不是增加了中文内容什么的,导致乱码了加载不完整


没有装插件,只用了一个jQuery.js的库;jQuery是网上下的原版,没有改过,里面没有中文 内容。
在Chrome ,搜狗。FF浏览器上显示都是正常的,就在IE还有win10的Edge上会出现undefined的情况;
在IE上引用外部的jQuery库就没问题,但是从服务器上加载到IE上就会出现上面的问题,所以会不会是由于服务器编码格式和IE的编码格式不同导致的jQuery加载不完整呢?[/quote]
没碰到过,你本地路径怎么写的,贴出来看看[/quote]
  • 打赏
  • 举报
回复
没装其他插件吧。是不是被插件拦截了,而且确保你jquery没被改过,是不是增加了中文内容什么的,导致乱码了加载不完整

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧