0

我正在尝试通过执行以下 jquery 代码将 URL 加载到 iframe 中。问题是当我尝试查找刚刚加载的 iframe 的元素时,它总是返回在上一次单击中加载的内容。第一次点击总是空的。有人可以帮我解决这个问题吗?谢谢

$(document).ready(function() {

    $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0')

        return false;
    });
    alert($('#myiframe').contents().find('.name').html())
});
4

3 回答 3

1

您需要等待获取的 URL 加载到 iframe 中,然后才能从中获取内容。您可以使用jquery .load() 函数来执行此操作。像这样的东西:

$(document).ready(function() {

 $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0')
                .load(function() {
                     alert($(this).contents().find('.name').html())
                })

        return false;
    });

});
于 2012-06-08T16:27:55.027 回答
0

可能的原因是您在注册 onclick 事件句柄后发出警报。你应该做的是这个,我猜:

$(document).ready(function() {

    $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0');
        $($("#myIframe").get(0).contentDocument).ready(function() {
            alert($('#myiframe').contents().find('.name').html())
        });
        return false;
    });
});
于 2012-06-08T16:26:40.413 回答
0

看起来您只需要等待 iFrame 在警报响起之前加载。您可以使用该load功能。

$("#myiframe").load(function() {
    alert("iFrame has loaded. You can now get content out of it");
});
于 2012-06-08T16:27:12.660 回答