代码之家  ›  专栏  ›  技术社区  ›  ChronicLogic

iframe onload在iframe未就绪时激发

  •  0
  • ChronicLogic  · 技术社区  · 6 年前

    所以我有个香草反应的问题。 我有这行代码在 ready() 功能:

    var current = this;    
    React.createElement(
                "iframe",
                {id: "iframeController", 
                 ref: "iframe", 
                 src: "data:text/html;charset=utf-8," + escape(notification.description), 
                 onLoad: current.iframeLoaded(this)}
    )
    

    notification.description来自我对 this.state.notifications

    这个功能可以跟随它

    iframeLoaded(iframe) {
        if(iframe) {
            iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";         
        }
    }
    

    但是,如果i console.log中iframeLoaded中的(iframe)元素,它将返回空值。如果getElementByID也是一样的,但它是未定义的。

    我做了一个设置,看看它是否是一个组件更新问题,结果是。所以,即使在chrome中,onload也会在src有时间渲染之前触发。

    我正在尝试获取高度以便在窗口中设置它,允许它调整大小并获取我正在获取的iframe的完整高度。

    有人能告诉我怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   cwallenpoole    6 年前

    我怀疑问题出在这一行: onLoad: current.iframeLoaded(this)} . 在这种情况下, onLoad 正在设置为的返回值 current.iframeLoaded(this) .

    我相信您希望将值包装在函数中(不是箭头符号,而是传统函数):

    onLoad: function(){current.iframeLoaded(this);}}