Javascript实现遍历回调对网页的方法(包括window.frames,递归函数,函数上下文)
它是从手写的纯Javascript工具程序提取,这是用来遍历所有的当前网页的子页面和执行迭代和回调,回调函数的返回值可以用于结果回程,这有助于减少闭包变量。
其特点是:只在窗口对象的索引页上进行递归遍历,而不是立即执行回调函数,而是在普通循环结构回调结束后进行搜索,这样可以最大限度地减少递归调用的内存消耗,同时也简化了程序的结构,并且易于维护。
全球功能frame_each(回调):
函数(BOM){
功能all_frames(iwindow){
无功_frames_ = { }。slice.call(iwindow.frames,0);
对于(var i = 0;i < _frames_。长度;i++)
_frames_ = _frames_ .concat(arguments.callee(_frames_ {我}));
返回_frames_;
}
bom.frame_each =函数(回调){
VaR框架= { } .concat(all_frames(这));
如果(!回调)返回帧;
对于(var i = 0,CBR;i < frames.length;i++){
{ } {我尝试帧。名称;} catch(I类错误){继续;}
CBR = callback.apply(帧{我},{ }。slice.call(参数1));
如果(CBR =假)断;
否则(如果未定义的)继续;
返回CBR;
}
};
})(自我);
使用的例子:
参数返回一个包含窗口窗口对象及其子页面的函数调用的数组,同样的递归遍历序列。
VaR页= frame_each();
console.log(页。长度);
定义回调回调:与普通循环函数对应的返回值:
1。:未定义:继续
2。
三.其他值:中断返回值
无功search_result = frame_each(function()){
我this.document.activeelement var =;
开关(ifocus.tagname.tolowercase()){
case'body:返回false;
case'iframe:返回;
}
Return iFocus;
});
search_result.innerhtml =您好,重点!;
希望本文能对大家的javascript程序设计有所帮助。