从MVC应用程序中的其他站点获取带有src的iframe内容

时间:2014-03-28 21:48:26

标签: javascript jquery html asp.net-mvc iframe

我想在iframe窗口中触发某些操作时以某种方式获取iframe内容。 iframe中的所有内容均来自其他网站。 iframe中有一个文本框和一个按钮,我想检测内容何时更新,如果iframe中有特定内容,那么我需要执行一些操作。 目前我所拥有的是:

<script type="text/javascript">
    $(document).ready(function() {
        var timesRefreshed = 0;
        $('#frame').load(function () {
            if (timesRefreshed == 1) {
                var data = {
                    transactionID : '@Model.OrderId'
                };
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("ConfirmationStep", "Cart")',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify(data),
                    dataType: "json",
                    success: function(result) {                       
                    }
            });
            }
            timesRefreshed++;
            if (timesRefreshed == 2) {
                window.location.href = '/Home/PaymentComplete/';
            }           
        });
    });  
</script>

使用这种方法并没有给我很多选项,只是简单地检查iframe加载了多少次,但是例如,如果用户输入了错误的数据,iframe可能会被加载,但会显示消息说明值是不正确的。

现在,这段代码将看到timesRefreshed等于2,它将重定向到另一个视图。我想查看iframe的实际内容。我检查了innerHTML属性,但它很可能是空的,因为iframe正在托管来自其他网站的内容。

1 个答案:

答案 0 :(得分:5)

试试jQuery postMessageDemo

jQuery postMessage在支持它的浏览器(FF3,Safari 4,IE8)中启用简单易用的window.postMessage通信,同时回退到所有其他浏览器的document.location.hash通信方法(IE6,IE7) ,Opera)。

通过添加window.postMessage method,JavaScript最终具有跨域框架通信的绝佳方式。不幸的是,并非所有浏览器都支持此方法。