Я сталкивался с подобной проблемой раньше: я думаю, что в этом случае вам нужно будет сделать две вещи:
- создать слой обмена сообщениями между двумя приложениями (приложением для встраивания и приложением iframe)
- расширяет код обоих приложений (чтобы iframe мог обрабатывать сообщения, отправленные ему через браузер)
Если приложение находится в другом домене, оно не может взаимодействовать напрямую из-за политики Same-origin.
Чтобы достичь этого, вы должны использовать window.postMessage () .
Основная идея:
- запускается встроенное приложение, запускается приложение iframe
Приложение iframe подписывается на сообщения с window.addEventListener("message", receiveMessage, false);
вложение приложения отправляет сообщение iframe с чем-то вроде @ViewChild('iframeRef') iframeRef: ElementRef;
this.iframeRef.nativeElement.contentWindow.postMessage({some message object to the iframe}, '*', []);
- Приложение iframe обрабатывает сообщение
Примечание. Из соображений безопасности вы можете проверить происхождение события сообщения и обрабатывать только сообщения, отправленные источником, которому вы доверяете.
function receiveMessage(event){
console.log("Received a message From: Angular", event);
// if (event.origin !== "http://example.org:8080")
// return;
// todo: this is crucial for being secure!
....
}