javascript實(shí)現(xiàn)網(wǎng)頁子頁面遍歷回調(diào)的方法(涉及 window.frames、遞歸函數(shù)、函數(shù)上下文)
本文實(shí)例講述了javascript實(shí)現(xiàn)網(wǎng)頁子頁面遍歷回調(diào)的方法(涉及 window.frames、遞歸函數(shù)、函數(shù)上下文)。分享給大家供大家參考。具體如下:
提煉于本人手寫的純 JavaScript 工具程序,用于遍歷當(dāng)前網(wǎng)頁的所有子頁面 并執(zhí)行迭代回調(diào),且回調(diào)函數(shù)返回值可用于結(jié)果回傳,有助于減少閉包變量~
其特點(diǎn)在于 —— 遞歸遍歷時(shí)只檢索子頁面的 Window 對象,不立即執(zhí)行回調(diào)函數(shù),而是在檢索結(jié)束后在普通循環(huán)結(jié)構(gòu)中回調(diào)。這樣可以盡量減少 遞歸調(diào)用時(shí)的內(nèi)存消耗,也簡化了程序結(jié)構(gòu),易于維護(hù)
全局函數(shù) Frame_Each( CallBack ):
(function (BOM) { function All_Frames(iWindow) { var _Frames_ = [].slice.call(iWindow.frames, 0); for (var i = 0; i < _Frames_.length; i++) _Frames_ = _Frames_.concat( arguments.callee(_Frames_[i]) ); return _Frames_; } BOM.Frame_Each = function (CallBack) { var Frames = [this].concat( All_Frames(this) ); if (! CallBack) return Frames; for (var i = 0, CBR; i < Frames.length; i++) { try { Frames[i].name; } catch (iError) { continue; } CBR = CallBack.apply(Frames[i], [].slice.call(arguments, 1)); if (CBR === false) break; else if (CBR === undefined) continue; return CBR; } }; })(self);
使用示例:
// 無參數(shù) —— 返回一個(gè)數(shù)組,包含函數(shù)調(diào)用所在的 Window 對象及其子頁面的 Window,其順序同遞歸遍歷 var Pages = Frame_Each(); console.log( Pages.length ); // 定義回調(diào) —— 回調(diào)返回值功能與普通循環(huán)語句的對應(yīng): // 1. undefined:continue // 2. false:break // 3. 其它任何值:break && return Value var Search_Result = Frame_Each(function () { var iFocus = this.document.activeElement; switch ( iFocus.tagName.toLowerCase() ) { case 'body': return false; case 'iframe': return; } return iFocus; }); Search_Result.innerHTML = 'Hello, Focus!';
希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。
- JavaScript遞歸函數(shù)定義與用法實(shí)例分析
- PHP自定義遞歸函數(shù)實(shí)現(xiàn)數(shù)組轉(zhuǎn)JSON功能【支持GBK編碼】
- JavaScript遞歸函數(shù)解“漢諾塔”算法代碼解析
- 基于JS遞歸函數(shù)細(xì)化認(rèn)識及實(shí)用實(shí)例(推薦)
- JavaScript正則表達(dá)式校驗(yàn)與遞歸函數(shù)實(shí)際應(yīng)用實(shí)例解析
- JS中遞歸函數(shù)
- javascript中遞歸函數(shù)用法注意點(diǎn)
- js中遞歸函數(shù)的使用介紹
- javascript 用記憶函數(shù)快速計(jì)算遞歸函數(shù)
- javascript遞歸函數(shù)定義和用法示例分析
相關(guān)文章
javascript Array數(shù)組對象的擴(kuò)展函數(shù)代碼
我們經(jīng)常給 String,Function,Array 的原型加上自定義的擴(kuò)展函數(shù),比如去除字符串空格,數(shù)組排序等2010-05-05Javascript進(jìn)制轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了Javascript進(jìn)制轉(zhuǎn)換方法,實(shí)例分析了javascript實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的技巧,需要的朋友可以參考下2015-05-05JS實(shí)現(xiàn)淘寶幻燈片效果的實(shí)現(xiàn)方法
淘寶幻燈片效果:能自動播放,鼠標(biāo)指向或者點(diǎn)擊數(shù)字按鈕就能切換圖片。2013-03-03如何實(shí)現(xiàn)小程序與小程序之間的跳轉(zhuǎn)
這篇文章主要給大家介紹了關(guān)于如何實(shí)現(xiàn)小程序與小程序之間的跳轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11基于JavaScript 性能優(yōu)化技巧心得(分享)
下面小編就為大家分享一篇基于JavaScript 性能優(yōu)化技巧心得,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12