我想设置iframe匹配其内容的高度。但是,即使将iframe.contentWindow放在undefined中,它也会返回.load()。这是完整的代码:


  注意:iframesrc属性根据您单击的链接而变化。


//Initialize MainIFrame
function MainIFrame(element) {
    var inst = this;
    this.handle = element;
    //Initializing with default view
    this.switchDefaultView();
    //Setting the default height
    this.setAutoHeight();
    //Add click event to links
    $('.link').on('click', function() {
        inst.switchView(this);
        inst.setAutoHeight();
    });
};

MainIFrame.prototype.switchDefaultView = function() {
    this.handle.attr('src','default.html');
};

MainIFrame.prototype.switchView = function(element) {
    var src = $(element).attr('href');
    this.handle.attr('src',src);
}

MainIFrame.prototype.setAutoHeight = function() {
    var inst = this.handle;
    $(this.handle).on('load',function() {
        var doc = inst.contentWindow ? inst.contentWindow.document : inst.contentDocument;
        alert(doc); //GETTING UNDEFINED
        //change height
    });
}

$(document).ready(function() {
    var myIFrame = $('#iframe-main');
    var mainIFrame = new MainIFrame(myIFrame);
});


有人可以告诉我这是怎么回事吗?非常感谢。

最佳答案

好吧,所以contentWindow是本机Javascript,由于我使用的是jQuery,因此必须首先获取原始的DOM对象。获取contentWindow的正确方法:

var win = $('#iframe-main').get(0).contentWindow;


For More Information

关于javascript - 即使在.load函数之后,iframe contentWindow仍未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48852888/

10-12 00:46