IE 当eval遇上function的处理


Posted in Javascript onAugust 09, 2011

情况1:eval里没有function,直接执行:
eval("alert('ss');");//所有浏览器正确均输出
情况2:eval里有function,function立即执行:
eval("(function(){alert('ss');})();");//所有浏览器正确输出
情况3:eval里有function,使用变量保存function引用并调用该function:
var f=eval("(function(){alert('ss');})");
f();//IE下报错:缺少对象 其他浏览器正常
当在eval定义一个function并返回给变量时,IE报错:缺少对象。可见IE下eval里定义的function并不能成功返回到eval外部。

解决方法:使function对象作为一个执行结果返回:

方法1:

var f=eval("(function(){ return function(){alert('ss');}})()");
f();//所有浏览器正确输出
eval里调用一个立即执行的函数,该函数执行之后返回一个function对象,此时该function对象的引用成功返回到外部变量。

方法2:

var f=eval("(false||function(){alert('ss');})");
f();//所有浏览器成功输出
该方法也是jquery里使用的方法,function作为或表达式的执行结果返回,同样能成功解决问题。当然,表达式并不局限于上面的false||function(){},各种表达式只要能成功返回function,均可解决问题:

/* 与表达式:*/
var f=eval("(true&&function(){alert('ss');})");
f();//所有浏览器正常输出

/* 三元表达式:*/
var f=eval("(true?function(){alert('ss');}:'');");
f();//所有浏览器正常输出

Javascript 相关文章推荐
javascript 鼠标拖动图标技术
Feb 07 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
深入分析JSONP跨域的原理
Dec 10 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
jQuery File Upload文件上传插件使用详解
Dec 06 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
React Hooks的深入理解与使用
Nov 12 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
Nov 12 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
浅析JavaScript中的变量提升
Jun 01 Javascript
取得窗口大小 兼容所有浏览器的js代码
Aug 09 #Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 #Javascript
基于Jquery的文字自动截取(提供源代码)
Aug 09 #Javascript
JQuery动态创建DOM、表单元素的实现代码
Aug 09 #Javascript
用JS判断IE版本的代码 超管用!
Aug 09 #Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 #Javascript
js 分页全选或反选标识实现代码
Aug 09 #Javascript
You might like
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python实现partial改变方法默认参数
2014/08/18 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
迁户口计划生育证明
2014/10/19 职场文书
会议主持人开场白台词
2015/05/28 职场文书
欠条范文
2015/07/03 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
python 判断文件或文件夹是否存在
2022/03/18 Python
Mysql中常用的join连接方式
2022/05/11 MySQL