Hello there
I have an iframe in my app and have setup some custom Javascript that is an event-listener that throws whatever it finds into the innerHTML of a Div in my app.
I would like to be able to somehow “grab” this data so I can have my app react in certain ways when certain information.
For overviews sake, here is a screenshot of the app:
Here is the javascript:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(e){
if (e.origin !== "https://zingtree.com") {
alert ("I did NOT see message comming from Zingtree, I have blocked it...");
} else {
document.getElementById("iframe-message").innerHTML += e.data;
}
}
And here is the python script for the app:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
app = dash.Dash(__name__)
server = app.server
app.config['suppress_callback_exceptions']=True
app.title = 'RFC Demo'
app.layout = html.Div(
children=[
html.Div(id='div-test'),
html.Div(
html.Iframe(id='iframe-test',src=f'https://zingtree.com/deploy/tree.php?z=embed&tree_id=TREE-ID',style={'width': '80%', 'height': '500px', 'sandbox': 'True'})
),
html.Div(id='iframe-message')
]
)
if __name__ == '__main__':
app.run_server(debug=True)
I have tried something simple like adding a callback like:
Output('show-node', 'children'),
[Input('iframe-message', 'children')])
def showNode(messageString):
'do something smart here....'
return
But it just gives me a None
…
Any help how to somehow get out the information from the eventListener or innerHTML of html.Div(‘iframe-message’) is much appreciated! (Or to tell me if it is even possible…)