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操作xml
Nov 04 Javascript
提高网站信任度的技巧
Oct 17 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
Jul 29 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
JS实现超炫网页烟花动画效果的方法
Mar 02 Javascript
jQuery给动态添加的元素绑定事件的方法
Mar 09 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
微信小程序实现页面跳转传值的方法
Oct 12 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
Mar 12 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
js中位运算的运用实例分析
Dec 11 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 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 简易输出CSV表格文件的方法详解
2013/06/20 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
Git命令之分支详解
2021/03/02 PHP
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python实现截屏的函数
2015/07/26 Python
python 网络编程常用代码段
2016/08/28 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
爱游人:Travelliker
2017/09/05 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
高中毕业自我鉴定
2013/12/13 职场文书
师德师风演讲稿
2014/05/05 职场文书
物业品质提升方案
2014/06/08 职场文书
超市创意活动方案
2014/08/15 职场文书
实习介绍信模板
2015/01/30 职场文书
个人培训总结
2015/03/05 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL