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之dhDataGrid Ver2.0.0代码
Jul 01 Javascript
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
Apr 06 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
ES6概念 Symbol.keyFor()方法
Dec 25 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
nuxt引入组件和公共样式的操作
Nov 05 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
德生9700DX电路分析
2021/03/02 无线电
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
php中错误处理操作实例分析
2019/08/23 PHP
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python代码调试的几种方法总结
2015/04/15 Python
python实现BackPropagation算法
2017/12/14 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
浅析PEP572: 海象运算符
2019/10/15 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
《世界多美呀》教学反思
2014/03/02 职场文书
党员公开承诺书
2014/03/25 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
销售口号霸气押韵
2015/12/24 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫