即使在.load函数之后,iframe contentWindow也未定义

时间:2018-02-18 14:42:16

标签: javascript jquery iframe

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

  

注意: src的{​​{1}}属性会根据您点击的链接进行更改。

//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);
});

有人可以告诉我这有什么问题吗?非常感谢。

1 个答案:

答案 0 :(得分:2)

好吧,contentWindow是原生的Javascript,因为我使用的是jQuery,所以我必须先获取原始的DOM对象。获取contentWindow的正确方法:

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

For More Information