Estoy tratando de detectar cambios en la URL de un <iframe /> incrustado en una aplicación Ionic (v5) usando Angular.
// ts file @ViewChild('myIframe') public iFrame; backButtonSubscription: Subscription; constructor( private navCtrl: NavController, public platform: Platform, private routerOutlet: IonRouterOutlet, private router: Router ) {} ngAfterViewInit() { this.backButtonSubscription = this.platform.backButton.subscribeWithPriority(10000, async () => { if (this.routerOutlet.canGoBack()) { return this.navCtrl.back(); } // Never changes const currentRootUrl = this.router.url; if (currentRootUrl !== '/my-root') { this.navCtrl.navigateRoot('my-root'); } else if (this.iFrame?.nativeElement?.src === 'https://some-website.com/') { App.exitApp(); } else { window.history.back(); } }); } // html file <iframe id="myIframe" width="100%" src="https://some-website.com/" frameborder="0" #myIframe></iframe>El iframe está en la página raíz de la aplicación y quiero detectar cambios en la URL para permitir la navegación a través del botón Atrás. Si el usuario está en la raíz del iframe, quiero cerrar la aplicación; de lo contrario, quiero volver a navegar en el iframe. Como la URL incrustada está en un dominio diferente al de la aplicación, no puedo enviar mensajes entre ellos.
¿Hay alguna forma de detectar si la URL cambió?
Los scripts en diferentes páginas pueden acceder entre sí si y solo si las páginas en las que se originan comparten el mismo protocolo, número de puerto y host (también conocido como "política del mismo origen").
De lo contrario, debe actualizar las ventanas principal y secundaria para usar el mecanismo postMessage(): https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage