Угловые 4 заданных значения для формирования поля ввода iframe - PullRequest
1 голос
/ 25 марта 2019

Я использую iframe с другим доменом в приложении angular 4 и хочу присвоить значения внутри полей ввода формы iframe.

Есть ли способ, которым мы можем достичь этого?

Спасибо.

1 Ответ

0 голосов
/ 25 марта 2019

Я сталкивался с подобной проблемой раньше: я думаю, что в этом случае вам нужно будет сделать две вещи:

  • создать слой обмена сообщениями между двумя приложениями (приложением для встраивания и приложением iframe)
  • расширяет код обоих приложений (чтобы iframe мог обрабатывать сообщения, отправленные ему через браузер)

Если приложение находится в другом домене, оно не может взаимодействовать напрямую из-за политики Same-origin.

Чтобы достичь этого, вы должны использовать window.postMessage () .

Основная идея:

  1. запускается встроенное приложение, запускается приложение iframe
  2. Приложение iframe подписывается на сообщения с window.addEventListener("message", receiveMessage, false);

  3. вложение приложения отправляет сообщение iframe с чем-то вроде @ViewChild('iframeRef') iframeRef: ElementRef; this.iframeRef.nativeElement.contentWindow.postMessage({some message object to the iframe}, '*', []);

    1. Приложение 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!

    ....
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...