Reloading look or dashboard using postMessage doesn't trigger message to parent window


(Young Zhao) #1

I have an embedded looker iframe which contains a look. I need to update the UI in the parent window after a look is reloaded (update filters and then re-run). But it looks like posting messages to the looker iframe doesn’t trigger and message back to the parent window. Is this the correct behavior? Is there a workaround for this issue?

Here a pseudo code

  // first register the listener
  window.addEventListener('message', (e) => {
    // I see the look iframe messages when the iframe is first loaded
    // *** NOTHING is triggered after I update and reload the look
    console.log(e)
  })

  function reload(iframe) {
    // update filters
    let updateJSON = JSON.stringify({
      type: 'look:filters:update',
      filters: { .... },
    })
    iframe.contentWindow.postMessage(updateJSON, '...')

    // reload look
    let runJSON = JSON.stringify({ type: 'look:run' })
    iframe.contentWindow.postMessage(runJSON, '...')
    
    // iframe is updated successfully, but parent window doesn't get any "message"
  }

  // lookerIframe is the looker iframe
  reload(lookerIframe)

(Elliot Park) #2

Hey @Young_Zhao,

To clarify, are you using code identical to the default window.addEventListener function like the one in our docs below:

Or are we using custom logic when checking the event source and event origin?


(Young Zhao) #3

Hi @Ellio,

Yes I am using code identical to the looker documentation. The issue is look:filters:update and look:run doesn’t trigger any message to the parent window.

I actually found a workaround for this by using iframe url to update the filter values


(Elliot Park) #4

I see. In this case, because we might need to get into the specifics of your javascript event scripting, I’d recommend sending an email to support@looker.com to get an email conversation started. This would allow us to better examine the in’s and out’s of your setup!


(Young Zhao) #5

@Ellio Thanks! I will contact support.