0

Any suggestion How to make Iframe communicate to parent window. Scenario :

Inside Iframe there is separate website in same domain having multiple links. When user clicks on Link inside iframe the value should propagate to parent window.

I tried tracking the click event inside Iframe and getting iFrame.src but it didnt work.

HTML :

 <iframe #Iframe class="iframek" (click)="onChange(kIframe)" sandbox="allow-same-origin allow-scripts allow-top-navigation" id="iframe_k"   [src]='safeUrl' scrolling="auto" frameborder="0" allowfullscreen=true wmode="transparent" name="kiframe"></iframe>

onChange(iframe) {
  console.log("onchange");
  if(iframe.contentWindow)
  {
    console.log(iframe.contentWindow.document);
  }
  else{
    console.log(iframe.contentWindow);
  }
  
  console.log(iframe.getAttribute('src'));
  
}
codegeek
  • 1
  • 1
  • 4
  • Take a look at this answer: https://stackoverflow.com/a/16657480/4633925 For same domain iframes, you need not post-message. You can access the iframe and vice-versa. – alchemist95 Sep 28 '21 at 14:24

1 Answers1

1

You should use cross-origin communication between Window objects.

See this answer for details: How to communicate between iframe and the parent site?.

To implement your scenario, do the following:

  1. Track all click events on anchors in the iframe
  2. After clicking, read the href attribute of the clicked anchor and send it to the parent window using window.postMessage() (remember to call preventDefault() on the click event to prevent navigation inside iframe)
  3. Receive the event in the parent window and navigate
pawel2101
  • 56
  • 3