iframe onload срабатывает, когда iframe не готов - PullRequest
0 голосов
/ 11 октября 2018

Итак, у меня проблема с ванильным React.У меня есть эта строка кода в функции 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)}
)

уведомление.description от сопоставления, которое я делаю для объекта в this.state.notifications

и этой функцииследовать ему

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

Однако, если я console.log элемента (iframe) в iframeLoaded, он возвращается как ноль.То же самое, если я получаюElementById, за исключением того, что он не определен.

Я сделал setTimeout, чтобы посмотреть, есть ли проблема с обновлением компонента, и оказалось, что это так.Так что onLoad даже в Chrome запускается до того, как у src есть время для рендеринга.

Я пытаюсь получить высоту, чтобы я мог установить ее в окне, позволяя изменить ее размер и принять полную высоту.фрейма, который я получаю.

Может кто-нибудь дать мне какие-нибудь советы о том, как это сделать?

1 Ответ

0 голосов
/ 11 октября 2018

Я подозреваю, что проблема в этой строке: onLoad: current.iframeLoaded(this)}.В этом контексте onLoad устанавливается на возвращаемое значение current.iframeLoaded(this).

Полагаю, вы хотите заключить значение в функцию (не обозначение стрелки, а традиционная функция):

onLoad: function(){current.iframeLoaded(this);}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...