mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-26 00:11:13 +02:00
contentwrap.jsx: make iframe refresh before applying changes. fixes #395
This commit is contained in:
@@ -145,12 +145,22 @@ export default class ContentWrap extends Component {
|
|||||||
log('✉️ Sending message to detached window');
|
log('✉️ Sending message to detached window');
|
||||||
this.detachedWindow.postMessage({ contents }, '*');
|
this.detachedWindow.postMessage({ contents }, '*');
|
||||||
} else {
|
} else {
|
||||||
this.frame.src = this.frame.src;
|
const writeInsideIframe = () => {
|
||||||
setTimeout(() => {
|
|
||||||
this.frame.contentDocument.open();
|
this.frame.contentDocument.open();
|
||||||
this.frame.contentDocument.write(contents);
|
this.frame.contentDocument.write(contents);
|
||||||
this.frame.contentDocument.close();
|
this.frame.contentDocument.close();
|
||||||
}, 10);
|
};
|
||||||
|
Promise.race([
|
||||||
|
// Just in case onload promise doesn't resolves
|
||||||
|
new Promise(resolve => {
|
||||||
|
setTimeout(resolve, 200);
|
||||||
|
}),
|
||||||
|
new Promise(resolve => {
|
||||||
|
this.frame.onload = resolve;
|
||||||
|
})
|
||||||
|
]).then(writeInsideIframe);
|
||||||
|
// Setting to blank string cause frame to reload
|
||||||
|
this.frame.src = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// we need to store user script in external JS file to prevent inline-script
|
// we need to store user script in external JS file to prevent inline-script
|
||||||
@@ -870,7 +880,6 @@ export default class ContentWrap extends Component {
|
|||||||
<div class="demo-side" id="js-demo-side" style="">
|
<div class="demo-side" id="js-demo-side" style="">
|
||||||
<iframe
|
<iframe
|
||||||
ref={el => (this.frame = el)}
|
ref={el => (this.frame = el)}
|
||||||
src="about://blank"
|
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
id="demo-frame"
|
id="demo-frame"
|
||||||
allowfullscreen
|
allowfullscreen
|
||||||
|
Reference in New Issue
Block a user