奇怪的无限循环 - 仅在ie中

时间:2012-01-26 20:10:29

标签: jquery

我需要根据嵌套在iframe中的iframe嵌套iframe。

我的代码结构如下所示。它在所有浏览器中都能正常工作,但是它会导致无限循环。但是,当它处于无限循环时,cpu根本不会被提升。

var getNested_iframes = function (document_element) {
        $.each(document_element.find("iframe"), function () {
            getNested_iframes($($(this)[0].document));
        });
        alert(".");
    }
    getNested_iframes($(myWindow._element));
    alert("done");

1 个答案:

答案 0 :(得分:0)

我不太确定你为什么这样做就像你正在做的那样,但是“$($(this)[0] .document)”对我来说看起来很可疑。在任何情况下,值得注意的是jquery对象本质上是任意大小的列表,所以你可以通过迭代而不是递归(并且从递归到迭代交换,当你可以做到这一点时,通常会导致像这样的问题来简化或者清理)。请尝试以下

$startlist = $(myWindow._element);

while($startlist.length > 0)
{
    $nextlist = $startlist.find("iframe");
    alert("(" + nextlist.length + ")");
    $startlist = $nextlist;
}

alert("done");

它甚至可以让你跟踪每个级别中有多少级别,有多少级别,等等。