繁体   English   中英

从中获取事件后获取iframe实例

[英]Get instance of iframe after getting event from it

我看到很多帖子可以通过iframe进行交流。 但是我的问题是在那之后。

我从iframe到父项中获取了事件,现在我想获取iframe的实例,以便我可以要求jquery根据从iframe传递来的味精来设置高度。

简而言之,我正在尝试定义一些常见的味精以从iframe与父对象进行通信。 信息之一就是改变它的高度。 因此,一种通用方法可以从1个或多个iframe接收消息并更改其高度。

父代码-----

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {

    msgData = $.parseJSON(e.data);

    if(msgData.iframeload){

        if(msgData.iframeload.height){
             $(e.source).css('height',''+msgData.iframeload.height);
        }
    }

},false);

iframe代码----

var msgToParent = {
iframeload : {
          height : window.document.body.scrollHeight
        }
};
parent.postMessage(JSON.stringify(msgToParent),"*");

我的问题是我应该编写替换什么代码

$(e.source).css('height',''+msgData.iframeload.height);

如果我用iframe的ID更改它,那么它会起作用。 所以我想要一种获取iframe对象的方法,可以帮助我设置高度。

$('#<id of iframe>').css('height',''+msgData.iframeload.height);

好肮脏的头脑总是可行的... :)这是我做的,并在iframe中将src作为msg中的额外元素添加为document.location.href ...

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {

    msgData = $.parseJSON(e.data);

    if(msgData.iframeload){

        if(msgData.iframeload.height){

            $.each($('iframe'),function(i,curIfra){

                if(msgData.src==curIfra.src){
                    $(curIfra).css('height',''+msgData.iframeload.height);
                }
            });
        }
    }

},false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM