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类型转换方法及需要注意的问题小结(挺全面)
Nov 11 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
Webpack中css-loader和less-loader的使用教程
Apr 27 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
js实现简单贪吃蛇游戏
May 15 Javascript
让Vue响应Map或Set的变化操作
Nov 11 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
js实现简单的倒计时
Jan 28 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
Session保存到数据库的php类分享
2011/10/24 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript fullscreen全屏实现代码
2009/04/09 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
python修改操作系统时间的方法
2015/05/18 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
django中的setting最佳配置小结
2017/11/21 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
学习python的前途 python挣钱
2019/02/27 Python
通过实例解析Python调用json模块
2019/12/11 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
校园安全检查制度
2014/02/03 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB