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 YUI 读码日记之 YAHOO.util.Dom - Part.4
Mar 22 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
微信小程序 教程之小程序配置
Oct 17 Javascript
js实现图片切换(动画版)
Dec 25 Javascript
JS处理一些简单计算题
Feb 24 Javascript
js实现旋转木马轮播图效果
Jan 10 Javascript
JS常见错误(Error)及处理方案详解
Jul 02 Javascript
JavaScript 与 TypeScript之间的联系
Nov 27 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
取得窗口大小 兼容所有浏览器的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字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python优先队列实现方法示例
2017/09/21 Python
解析Python的缩进规则的使用
2019/01/16 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
使用python实现滑动验证码功能
2019/08/05 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
职务任命书范本
2014/06/05 职场文书
股东授权委托书范本
2014/09/13 职场文书
婚礼父母答谢词
2015/01/04 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
git stash(储藏)的用法总结
2022/06/25 Servers
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技