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中的call实现继承
Jan 22 Javascript
asp.net和asp下ACCESS的参数化查询
Jun 11 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
Oct 10 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
详解js前端代码异常监控
Jan 11 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 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设计模式  Command(命令模式)
2011/06/17 PHP
Symfony控制层深入详解
2016/03/17 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
HTTP 304错误的详细讲解
2013/11/13 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
python实现二分查找算法
2017/09/21 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
优秀民警事迹材料
2014/01/29 职场文书
艾滋病宣传标语
2014/06/25 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
家装业务员岗位职责
2015/04/03 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技