我在angular 4应用程序中将iframe与其他域一起使用,并希望在iframe表单输入字段中分配值。
有什么方法可以实现这一目标?
谢谢。
答案 0 :(得分:0)
我以前遇到过类似的问题:我认为在这种情况下,您需要做两件事:
如果应用程序位于其他域中,则由于Same-origin policy.
,它们无法直接进行交互要实现此目的,您必须使用window.postMessage()。
基本思路:
iframe应用程序通过window.addEventListener("message", receiveMessage, false);
嵌入应用程序通过@ViewChild('iframeRef') iframeRef: ElementRef;
之类的消息发送经过iframe的邮件
this.iframeRef.nativeElement.contentWindow.postMessage({some message object to the 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!
....
}