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 相关文章推荐
jquery下为Event handler传递动态参数的代码
Jan 06 Javascript
Javascript绝句欣赏 一些经典的js代码
Feb 22 Javascript
使用script的src实现跨域和类似ajax效果
Nov 10 Javascript
JS实现仿QQ效果的三级竖向菜单
Sep 25 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
JS实现的表格行上下移动操作示例
Aug 03 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
Jan 03 Javascript
vue-router定义元信息meta操作
Dec 07 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实现的连贯操作、链式操作实例
2014/07/08 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
php生成gif动画的方法
2015/11/05 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python实现多进程共享数据的方法分析
2017/12/04 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
教师自我鉴定
2013/12/13 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
人事部经理岗位职责
2014/03/07 职场文书
教师职位说明书
2014/07/29 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
初中成绩单评语
2014/12/29 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
法律意见书范文
2015/05/20 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL