将URL加载到iframe中并查找刚刚加载的HTML的值 - Jquery

时间:2012-06-08 16:21:03

标签: javascript jquery html

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

$(document).ready(function() {

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

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

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

3 个答案:

答案 0 :(得分:1)

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

$(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;
    });

});

答案 1 :(得分: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;
    });
});

答案 2 :(得分:0)

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

$("#myiframe").load(function() {
    alert("iFrame has loaded. You can now get content out of it");
});