做jquery插件时,使用jquery cdn,在ie浏览器中出现$未定义的情况

吃饭callme 2017-02-14 06:49:59
在做jquery插件时,我们要使用
(function($, window, document, undefined)
{
})(jQuery, window, document);

在这里出现一个问题,
如果使用jquery cdn ,<script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script>
在ie浏览器中就会报错$未定义,但是使用本地的jquery文件<script src="jquery-1.8.3.min.js"></script>就不会出现$未定义的情况,这是什么情况,求大神解答。
...全文
366 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
吃饭callme 2017-02-16
  • 打赏
  • 举报
回复
引用 7 楼 soonyolsd的回复:
[quote=引用 5 楼 chenyejunjun 的回复:] [quote=引用 3 楼 soonyolsd的回复:]首先考虑https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js能否正常加载, 其次考虑浏览器与jq兼容性问题。
那个cdn是确定正常加载并且可以使用的,在ie低版本中做其他用途也是没问题的,就是在(function($, window, document, undefined) {})(jQuery, window, document);时会出现错误[/quote] 还有就是看你代码本身有没有问题,F12看看是否有报错。 ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document); 1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。 2、匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。避免函数体内和外部的变量冲突。 3、$实参:$是jquery的简写,很多方法和类库也使用$,这里$接受jQuery对象,也是为了避免$变量冲突,保证插件可以正常运行。 4、window, document实参分别接受window, document对象,window, document对象都是全局环境下的,而在函数体内的window, document其实是局部变量,不是全局的window, document对象。这样做有个好处就是可以提高性能,减少作用域链的查询时间,如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。 5、最后剩下一个undefined形参了,那么这个形参是干什么用的呢,看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined[/quote] 谢谢,解决了,浏览器问题
soonyolsd 2017-02-15
  • 打赏
  • 举报
回复
引用 5 楼 chenyejunjun 的回复:
[quote=引用 3 楼 soonyolsd的回复:]首先考虑https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js能否正常加载, 其次考虑浏览器与jq兼容性问题。
那个cdn是确定正常加载并且可以使用的,在ie低版本中做其他用途也是没问题的,就是在(function($, window, document, undefined) {})(jQuery, window, document);时会出现错误[/quote] 还有就是看你代码本身有没有问题,F12看看是否有报错。 ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document); 1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。 2、匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。避免函数体内和外部的变量冲突。 3、$实参:$是jquery的简写,很多方法和类库也使用$,这里$接受jQuery对象,也是为了避免$变量冲突,保证插件可以正常运行。 4、window, document实参分别接受window, document对象,window, document对象都是全局环境下的,而在函数体内的window, document其实是局部变量,不是全局的window, document对象。这样做有个好处就是可以提高性能,减少作用域链的查询时间,如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。 5、最后剩下一个undefined形参了,那么这个形参是干什么用的呢,看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined
soonyolsd 2017-02-15
  • 打赏
  • 举报
回复
引用 5 楼 chenyejunjun 的回复:
[quote=引用 3 楼 soonyolsd的回复:]首先考虑https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js能否正常加载, 其次考虑浏览器与jq兼容性问题。
那个cdn是确定正常加载并且可以使用的,在ie低版本中做其他用途也是没问题的,就是在(function($, window, document, undefined) {})(jQuery, window, document);时会出现错误[/quote] 有试过其他浏览器吗,先确定问题出在哪里,如果其他浏览器也有这个问题,那就考虑(function($, window, document, undefined) {})(jQuery, window, document);这段代码本身与jq版本的兼容问题了,否则就是IE浏览器与jq的兼容问题。
吃饭callme 2017-02-15
  • 打赏
  • 举报
回复
引用 3 楼 soonyolsd的回复:
首先考虑https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js能否正常加载, 其次考虑浏览器与jq兼容性问题。
那个cdn是确定正常加载并且可以使用的,在ie低版本中做其他用途也是没问题的,就是在(function($, window, document, undefined) {})(jQuery, window, document);时会出现错误
吃饭callme 2017-02-15
  • 打赏
  • 举报
回复
引用 2 楼 Lay_man.的回复:
Jq与 IE低版本不兼容问题
高版本ie也会有问题
soonyolsd 2017-02-15
  • 打赏
  • 举报
回复
首先考虑https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js能否正常加载, 其次考虑浏览器与jq兼容性问题。
三师兄东流 2017-02-14
  • 打赏
  • 举报
回复
Jq与 IE低版本不兼容问题
天际的海浪 2017-02-14
  • 打赏
  • 举报
回复
看看https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js地址是不是失效了,重新找个cdn

87,909

社区成员

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

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