IE 當(dāng)eval遇上function的處理
eval("alert('ss');");//所有瀏覽器正確均輸出
情況2:eval里有function,function立即執(zhí)行:
eval("(function(){alert('ss');})();");//所有瀏覽器正確輸出
情況3:eval里有function,使用變量保存function引用并調(diào)用該function:
var f=eval("(function(){alert('ss');})");
f();//IE下報(bào)錯(cuò):缺少對(duì)象 其他瀏覽器正常
當(dāng)在eval定義一個(gè)function并返回給變量時(shí),IE報(bào)錯(cuò):缺少對(duì)象??梢?jiàn)IE下eval里定義的function并不能成功返回到eval外部。
解決方法:使function對(duì)象作為一個(gè)執(zhí)行結(jié)果返回:
方法1:
var f=eval("(function(){ return function(){alert('ss');}})()");
f();//所有瀏覽器正確輸出
eval里調(diào)用一個(gè)立即執(zhí)行的函數(shù),該函數(shù)執(zhí)行之后返回一個(gè)function對(duì)象,此時(shí)該function對(duì)象的引用成功返回到外部變量。
方法2:
var f=eval("(false||function(){alert('ss');})");
f();//所有瀏覽器成功輸出
該方法也是jquery里使用的方法,function作為或表達(dá)式的執(zhí)行結(jié)果返回,同樣能成功解決問(wèn)題。當(dāng)然,表達(dá)式并不局限于上面的false||function(){},各種表達(dá)式只要能成功返回function,均可解決問(wèn)題:
/* 與表達(dá)式:*/
var f=eval("(true&&function(){alert('ss');})");
f();//所有瀏覽器正常輸出
/* 三元表達(dá)式:*/
var f=eval("(true?function(){alert('ss');}:'');");
f();//所有瀏覽器正常輸出
相關(guān)文章
JS+CSS實(shí)現(xiàn)分類動(dòng)態(tài)選擇及移動(dòng)功能效果代碼
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)分類動(dòng)態(tài)選擇及移動(dòng)功能效果代碼,涉及JavaScript實(shí)現(xiàn)頁(yè)面元素動(dòng)態(tài)變換效果實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10json對(duì)象與數(shù)組以及轉(zhuǎn)換成js對(duì)象的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇json對(duì)象與數(shù)組以及轉(zhuǎn)換成js對(duì)象的簡(jiǎn)單實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06JS禁用頁(yè)面上所有控件的實(shí)現(xiàn)方法(附demo源碼下載)
這篇文章主要介紹了JS禁用頁(yè)面上所有控件的方法,涉及JavaScript捕捉頁(yè)面元素的相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2015-12-12JavaScript獲取頁(yè)面中表單(form)數(shù)量的方法
這篇文章主要介紹了JavaScript獲取頁(yè)面中表單(form)數(shù)量的方法,涉及javascript操作表單document.forms數(shù)組的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04不得不分享的JavaScript常用方法函數(shù)集(上)
不得不分享的JavaScript常用方法函數(shù)集,幫助大家更好的學(xué)習(xí)javascript程序設(shè)計(jì),有興趣的朋友可以參考一下2015-12-12javascript中onmouse事件在div中失效問(wèn)題的解決方法
我們預(yù)期只有當(dāng)鼠標(biāo)從div中移開(kāi)的時(shí)候才會(huì)觸發(fā)onmouseout事件,可事實(shí)上,當(dāng)我們移到div中的元素時(shí),例如:本例中的a標(biāo)簽時(shí),就會(huì)觸發(fā) onmousout事件2012-01-01頁(yè)面中實(shí)現(xiàn)setInterval和setTimeout效果示例詳解
這篇文章主要為大家介紹了不使用setTimeout和setInterval在頁(yè)面中實(shí)現(xiàn)setInterval和setTimeout效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09JS函數(shù)修改html的元素內(nèi)容,及修改屬性內(nèi)容的方法
下面小編就為大家?guī)?lái)一篇JS函數(shù)修改html的元素內(nèi)容,及修改屬性內(nèi)容的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10