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 相关文章推荐
通过url查找a元素并点击
Apr 09 Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
JS+CSS实现仿新浪微博搜索框的方法
Feb 24 Javascript
JavaScript中的pow()方法使用详解
Jun 15 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
vue双向绑定的简单实现
Dec 22 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
es6函数name属性功能与用法实例分析
Apr 18 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 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
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
大学生求职推荐信
2013/11/27 职场文书
经销商订货会主持词
2014/03/27 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
新教师教学工作总结
2015/08/12 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
python如何利用traceback获取详细的异常信息
2021/06/05 Python