Рекурсивный доступ к фреймам после их загрузки с помощью jQuery - PullRequest
0 голосов
/ 21 июля 2010

Я посмотрел на соответствующие вопросы здесь, но у меня немного другая проблема.

Я переписываю якоря для вложенных фреймов, иногда глубиной 3 или 4 фрейма.

Я использую .load (function () {}), чтобы дождаться загрузки каждого из них, прежде чем получить доступ к якорям. Это прекрасно работает, когда идет только один фрейм, но после этого не получается.

Вот код:

function retarget_links( content ) {

    content.find("a").attr("href","#") ;

    var frame = content.find("iframe") ;
    if ( frame.length ) {
        frame.load(function() {
            retarget_links( frame.contents() ) ;
        })
    }
}

retarget_links( $("body") ) ;

Он находит все фреймы рекурсивно, но выполняет только обратный вызов .load для первого.

Есть идеи, почему?

Спасибо!

ПРИМЕЧАНИЕ. Все документы iframe находятся в одном и том же домене - я могу получить доступ ко всему содержимому фреймов с консоли.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Похоже, это потому, что дочерние iframes уже загружены к моменту записи события onload. Duh.

0 голосов
/ 21 июля 2010

var frame = content.find ("iframe"); if (frame.length) { frame.each (function () { this.load (function () { widget.retarget_links (this.contents ()); }) }); }

Я добавил цикл foreach и использовал this keyword для загрузки содержимого каждого

...