diff --git a/src/Add-on/Erp/ErpView.tsx b/src/Add-on/Erp/ErpView.tsx index 064422589..fff8b7f9b 100644 --- a/src/Add-on/Erp/ErpView.tsx +++ b/src/Add-on/Erp/ErpView.tsx @@ -22,6 +22,7 @@ interface ErpViewProp } export class ErpView extends React.Component { iframe: React.RefObject; + private appLoaded: boolean = false; // todo: iframe onload 移除后弃用此属性 constructor(props) { super(props); @@ -40,6 +41,7 @@ export class ErpView extends React.Component { ); channel.port1.onmessage = (e: MessageEvent) => { + this.appLoaded = true; let data = e.data; let result: { blockList: OrderDataBlock[], objectList: OrderDataObject[]; }; switch (data.command) @@ -57,6 +59,7 @@ export class ErpView extends React.Component { }; iframeLoaded = () => { + // console.log('iframeLoaded'); let fileName = FileServer.GetInstance().currentFileInfo.name; let option = Object.assign({}, userConfig.chaidanOption); let singleData = { session: this.props.session, cadData: this.props.cadData, fileName: fileName }; @@ -87,9 +90,18 @@ export class ErpView extends React.Component { this.postMessage("cadExport", { session: this.props.session }); break; } + + window.addEventListener('message', this.loadedEvent); window.addEventListener('message', this.closeEvent); window.addEventListener('message', this.warningEvent); }; + private loadedEvent = (ev) => + { + if (ev.data.command == 'loaded' && this.appLoaded == false) + { + this.iframeLoaded(); + } + }; private closeEvent = (ev) => { switch (ev.data.command) @@ -146,6 +158,7 @@ export class ErpView extends React.Component { } componentWillUnmount() { + window.removeEventListener("message", this.loadedEvent); window.removeEventListener("message", this.closeEvent); window.removeEventListener("message", this.warningEvent); }