0

我在这里查看了相关问题,但问题略有不同。

我正在跨嵌套 iframe 重写锚点,有时深度为 3 或 4 个 iframe。

在访问锚点之前,我使用 .load(function(){}) 等待每个加载。这在只深入一个 iframe 时效果很好,但在那之后就失败了。

这是代码:

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") ) ;

它递归地查找所有 iframe,但它只会为第一个执行 .load 回调。

任何想法为什么?

谢谢!

注意:所有 iframe 文档都在同一个域中——我可以通过控制台访问所有框架的内容。

4

2 回答 2

1

看起来这是因为在写入 onload 事件时子 iframe 已经加载。呃。

于 2010-07-21T22:57:28.240 回答
0

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

我添加了一个 foreach 循环并使用 thiskeyword来加载每个循环的内容

于 2010-07-21T19:59:17.673 回答